eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.misc.elektronikaWinAVR-20090313 "inlajnowanie" funkcji.
Ilość wypowiedzi w tym wątku: 10

  • 1. Data: 2009-09-04 19:52:14
    Temat: WinAVR-20090313 "inlajnowanie" funkcji.
    Od: Grzegorz Kurczyk <g...@c...slupsk.pl>

    Witam Kolegów.
    Czemu ta ostatnia wersja tak uparcie wrzuca nawet spore funkcje jako
    inline powtarzając bez sensu spore kawałki kodu zamiast wstawić rcall.
    Optymalizacja na "s". Jest jakiś kruczek coby zmusić go do wołania
    funkcji przez rcall ?

    Pozdrawiam
    Grzegorz


  • 2. Data: 2009-09-04 20:04:16
    Temat: Re: WinAVR-20090313 "inlajnowanie" funkcji.
    Od: Grzegorz Kurczyk <g...@c...slupsk.pl>


    Już znalazłem
    Pozdrawiam
    G.K.


  • 3. Data: 2009-09-04 21:19:09
    Temat: Re: WinAVR-20090313 "inlajnowanie" funkcji.
    Od: Konop <k...@g...pl>

    Grzegorz Kurczyk pisze:
    >
    > Już znalazłem
    > Pozdrawiam
    > G.K.
    Kolego, to może napisz?? Ktoś kiedyś będzie szukał w archiwum i będzie
    widział tylko posty w stylu "już wiem", "już znalazłem"... to chyba nie
    jest duży problem napisać te pare zdań... Ty miałeś ten problem, to inni
    też go mogą kiedyś mieć...

    Pozdrawiam!!


  • 4. Data: 2009-09-04 22:32:57
    Temat: Re: WinAVR-20090313 "inlajnowanie" funkcji.
    Od: Grzegorz Kurczyk <g...@c...slupsk.pl>

    Użytkownik Konop napisał:
    > Grzegorz Kurczyk pisze:
    >>
    >> Już znalazłem
    >> Pozdrawiam
    >> G.K.
    > Kolego, to może napisz?? Ktoś kiedyś będzie szukał w archiwum i będzie
    > widział tylko posty w stylu "już wiem", "już znalazłem"... to chyba nie
    > jest duży problem napisać te pare zdań... Ty miałeś ten problem, to inni
    > też go mogą kiedyś mieć...
    >
    > Pozdrawiam!!

    Sorki. Ma Kolega rację.
    Dla potomnych: dyrektywy kompilatora odpowiedzialne za "inlajnowanie",
    które należy dopisać do makefile

    CFLAGS += -fno-inline
    CFLAGS += -fno-inline-small-functions
    CFLAGS += -finline-limit=3
    CFLAGS += --param inline-call-cost=2

    w sumie wystarczy ta pierwsza (wyłącza tryb inline).

    Pozdrawiam
    G.K.


  • 5. Data: 2009-09-05 14:26:53
    Temat: Re: WinAVR-20090313 "inlajnowanie" funkcji.
    Od: "identyfikator: 20040501" <N...@o...eu>

    > Dla potomnych: dyrektywy kompilatora

    a może jak Ktoś kiedyś będzie szukał i znajdzie Twojego posta jako mało
    oblatany nie będzie wiedział o co chodzi... więc może byś wyjaśnił co to
    jest to "inlajnowanie" funkcji?


  • 6. Data: 2009-09-05 18:06:47
    Temat: Re: WinAVR-20090313 "inlajnowanie" funkcji.
    Od: JanuszK <J...@m...o2.pl>

    identyfikator: 20040501 wrote:
    >> Dla potomnych: dyrektywy kompilatora
    >
    > a może jak Ktoś kiedyś będzie szukał i znajdzie Twojego posta jako mało
    > oblatany nie będzie wiedział o co chodzi... więc może byś wyjaśnił co to
    > jest to "inlajnowanie" funkcji?
    Jak przeczyta cały wątek i nie zrozumie to bedzie oznaczać że powinien
    zająć się czymś innym niż pisanie programów.

    --
    -----
    Pozdr
    Janusz


  • 7. Data: 2009-09-06 12:56:00
    Temat: Re: WinAVR-20090313 "inlajnowanie" funkcji.
    Od: "identyfikator: 20040501" <N...@o...eu>

    > Jak przeczyta cały wątek i nie zrozumie to bedzie oznaczać że powinien
    > zająć się czymś innym niż pisanie programów.

    może i tak, gdyby jednak Ktoś chciał napisać to z góry dzięki.


  • 8. Data: 2009-09-06 14:26:02
    Temat: Re: WinAVR-20090313 "inlajnowanie" funkcji.
    Od: XYZ <j...@m...bin>

    W dniu 2009-09-05 16:26, identyfikator: 20040501 pisze:
    >> Dla potomnych: dyrektywy kompilatora
    >
    > a może jak Ktoś kiedyś będzie szukał i znajdzie Twojego posta jako mało
    > oblatany nie będzie wiedział o co chodzi... więc może byś wyjaśnił co to
    > jest to "inlajnowanie" funkcji?
    Ale skoro nie będzie wiedział, czego szuka to nawet nie znajdzie tej
    wiadomości, bo co wpisze w wyszukiwarkę? :) Jeśli chcesz się dowiedzieć
    więcej, szukaj pod hasłami inlining i inline function.


  • 9. Data: 2009-09-07 09:44:21
    Temat: Re: WinAVR-20090313 "inlajnowanie" funkcji.
    Od: Grzegorz Kurczyk <g...@a...control.slupsk.pl>

    Użytkownik identyfikator: 20040501 napisał:
    >> Dla potomnych: dyrektywy kompilatora
    >
    > a może jak Ktoś kiedyś będzie szukał i znajdzie Twojego posta jako mało
    > oblatany nie będzie wiedział o co chodzi... więc może byś wyjaśnił co to
    > jest to "inlajnowanie" funkcji?

    Witam ponownie.

    Generalnie te informacje są istotne dla ZSOKW i ZBOKB czyli:
    Zwolenników Skrajnej Optymalizacji Kodu Wynikowego
    i
    Związku Bojowników o Każdy Bajt

    :-)

    Owo "inlajnowanie" to jedna z metod optymalizacji kodu wynikowego przez
    kompilator. Przykładowo mamy funkcję A wywoływaną przez funkcję B. Jeśli
    w wyniku kompilacji wyszło, że ciało funkcji A to w efekcie trzy bajty
    na krzyż, to nie ma sensu we wnętrzu funkcji B wstawiać wywołania
    funkcji A przez rozkaz CALL (i potem wracać przez RET co jest dodatkowym
    obciążeniem czasowym) ekonomiczniej jest wkompilować ciało funkcji A
    bezpośrednio w ciało funkcji B. Chodzi tylko aby nie przegiąć przy tej
    optymalizacji i nie doprowadzić do rozrostu kodu wynikowego.

    P.S. Z wyłączeniem onlajnowania dyrektywą -fno-inline trzeba uważać, bo
    np. bloki ATOMIC zaczynają generować prawdziwe koszmarki w kodzie
    wynikowym zamiast prostego in r15, SREG; cli; ..... out SREG, r15.
    Korzystniej jest poeksperymentować z parametrem -finline-limit=3
    osiągając stosowny kompromis.

    Pozdrawiam
    Grzegorz


  • 10. Data: 2009-09-07 20:44:36
    Temat: Re: WinAVR-20090313 "inlajnowanie" funkcji.
    Od: "T.M.F." <t...@n...mp.pl>

    >> a może jak Ktoś kiedyś będzie szukał i znajdzie Twojego posta jako
    >> mało oblatany nie będzie wiedział o co chodzi... więc może byś
    >> wyjaśnił co to jest to "inlajnowanie" funkcji?
    >
    > Witam ponownie.
    >
    > Generalnie te informacje są istotne dla ZSOKW i ZBOKB czyli:
    > Zwolenników Skrajnej Optymalizacji Kodu Wynikowego
    > i
    > Związku Bojowników o Każdy Bajt

    Ja bym to nazwal Zwiazkiem Bojownikow o Kazda Instrukcje - w skrocie
    "ZBoKI" co lepiej oddaje istote problemu :)

    > Owo "inlajnowanie" to jedna z metod optymalizacji kodu wynikowego przez
    > kompilator. Przykładowo mamy funkcję A wywoływaną przez funkcję B. Jeśli
    > w wyniku kompilacji wyszło, że ciało funkcji A to w efekcie trzy bajty
    > na krzyż, to nie ma sensu we wnętrzu funkcji B wstawiać wywołania
    > funkcji A przez rozkaz CALL (i potem wracać przez RET co jest dodatkowym
    > obciążeniem czasowym) ekonomiczniej jest wkompilować ciało funkcji A
    > bezpośrednio w ciało funkcji B. Chodzi tylko aby nie przegiąć przy tej
    > optymalizacji i nie doprowadzić do rozrostu kodu wynikowego.

    To jest jeden powod, drugi czestszy to optymalizacja pod wzgledem
    szybkosci. Czyli zamiast robic np. petle for mozna ja rozwinac na ciag
    instrukcji (to kontroluje inna dyrektywa kompilatora), albo wlasnie
    wstawic nawet dluzsza sekwencje rozkazow, ale za to uniknac RCALL/CALL z
    RET, ktore sa dlugie.

    > P.S. Z wyłączeniem onlajnowania dyrektywą -fno-inline trzeba uważać, bo
    > np. bloki ATOMIC zaczynają generować prawdziwe koszmarki w kodzie
    > wynikowym zamiast prostego in r15, SREG; cli; ..... out SREG, r15.
    > Korzystniej jest poeksperymentować z parametrem -finline-limit=3
    > osiągając stosowny kompromis.

    O ile sie nie myle to z gcc w WinAVR z 13.03.09 jest pewien problem -
    nie do konca poprawnie reaguje na te dyrektywy. Jest obejscie tego, ale
    w tej chwili nie pamietam, zainteresowani wygooglaja.

    --
    Inteligentny dom - http://idom.wizzard.one.pl
    http://idom.sourceforge.net/
    Teraz takze forum dyskusyjne
    Zobacz, wyslij uwagi, dolacz do projektu.

strony : [ 1 ]


Szukaj w grupach

Szukaj w grupach

Eksperci egospodarka.pl

1 1 1

Wpisz nazwę miasta, dla którego chcesz znaleźć jednostkę ZUS.

Wzory dokumentów

Bezpłatne wzory dokumentów i formularzy.
Wyszukaj i pobierz za darmo: