-
Data: 2009-09-07 20:44:36
Temat: Re: WinAVR-20090313 "inlajnowanie" funkcji.
Od: "T.M.F." <t...@n...mp.pl> szukaj wiadomości tego autora
[ pokaż wszystkie nagłówki ]>> 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.
Najnowsze wątki z tej grupy
- kolorowy e-paper
- Sterownik kotła CO praca PWM
- Jakie baterie A23 i LR44?
- OLED SSD1306 - degradacja?
- Który symulator AVR jest ,,prawilny"?
- Disk on Module, czym to odczytać?
- Pasta ochronna? Lutownicza?
- zagadka pneumatyczna
- Klip testowy, jak sie to używa
- Jak sie smazy elektronike z odleglosci kilkuset metrów?
- William Shockley, co-inventor of the transistor
- Gazowy kocioł CO regulacja cyklingu i regulacja pogodowa
- Zamek elektroniczny
- szablon do pasty DIY
- Głośnik potrzebny
Najnowsze wątki
- 2025-11-24 Domowy switch 1GBit/8 portów, ale lepszy niż najtańsze
- 2025-11-24 Kraków => Production Coordinator / Representant Product Dev <=
- 2025-11-24 Warszawa => Przedstawiciel handlowy / KAM (branża TSL) <=
- 2025-11-24 Białystok => Solution Architect (Workday) - Legal Systems <=
- 2025-11-24 Białystok => Konsultant ERP Microsoft Dynamics 365 Commerce <=
- 2025-11-24 Rzeszów => ERP Microsoft Dynamics 365 Commerce Consultant <=
- 2025-11-24 Białystok => Programista React ze znajomością C++ <=
- 2025-11-24 Gdańsk => Dynamics 365 Commerce/POS Developer <=
- 2025-11-24 Białystok => Microsoft Dynamics 365 Finance Consultant <=
- 2025-11-24 Białystok => Senior Microsoft Dynamics 365 Business Central Konsultan
- 2025-11-24 I kolejne mleko się rozlało
- 2025-11-24 kolorowy e-paper
- 2025-11-24 Białystok => Konsultant Microsoft Dynamics 365 Finance <=
- 2025-11-24 Białystok => Programista Delphi <=
- 2025-11-24 DRL tylne




Ile kosztują tanie mieszkania w polskich metropoliach?