-
Data: 2009-09-07 09:44:21
Temat: Re: WinAVR-20090313 "inlajnowanie" funkcji.
Od: Grzegorz Kurczyk <g...@a...control.slupsk.pl> szukaj wiadomości tego autora
[ pokaż wszystkie nagłówki ]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
Następne wpisy z tego wątku
- 07.09.09 20:44 T.M.F.
Najnowsze wątki z tej grupy
- Raspberry Pi 3 Model B+
- Kuchenka elektryczna
- test
- Cewka elektrozaworu
- zapytanie o chip r5f21275nfp
- nie naprawiam więcej telewizorów
- Zrobił TV OLED z TV LCD
- Zasilacz USB na ścianę.
- Gniazdo + wtyk
- Aliexpress zaczął oszukiwać na bezczelnego.
- OpenPnP
- taka skrzynka do kablowki
- e-paper
- 60 mA dużo czy spoko?
- Dziwne zachowanie magistrali adresowej w 8085
Najnowsze wątki
- 2025-03-15 Błonie => Analityk Systemów Informatycznych (TMS SPEED) <=
- 2025-03-15 Warszawa => Senior Frontend Developer (React + React Native) <=
- 2025-03-15 Warszawa => Java Full Stack Developer (Angular2+ experience) <=
- 2025-03-15 Warszawa => Java Full Stack Developer (Angular2+) <=
- 2025-03-15 KOMU w RP3 pasuje "Rumuńska łatwość gmerania w wyborach" i dlaczego nie PO-Trzaskanym?
- 2025-03-15 China-Kraków => Key Account Manager IT <=
- 2025-03-14 Spalił się autobus :-)
- 2025-03-14 Policjanci z Piątku
- 2025-03-14 Lublin => JavaScript / Node / Fullstack Developer <=
- 2025-03-14 Warszawa => Account Manager - Sprzedaż Usług Rekrutacyjnych <=
- 2025-03-14 Gliwice => Business Development Manager - Dział Sieci i Bezpieczeńst
- 2025-03-14 VAT-R Umowa najmu na adres zamieszkania
- 2025-03-14 Gliwice => IT Expert (Network Systems area) <=
- 2025-03-14 Warszawa => Junior Rekruter <=
- 2025-03-14 Wrocław => Konsultant wdrożeniowy Comarch XL/Optima (Księgowość i