Hey, mam następującą zagwozdkę:
Dlaczego funkcje inline powinny być krótkie, jaki wpływ na wydajność mają długie funkcje inline oraz dlaczego ma to w ogóle wpływ na wydajność? W końcu funkcja inline zamienia kod funkcji na kod zwykły kod. Zastanawiam się więc dlaczego funkcja, która nie jest inline miałaby się wykonać szybciej niż ta sama część kodu wewnątrz innej funkcji bardziej rozbudowanej?
Z góry dzięki za wyjaśnienie.
- Rejestracja:około 10 lat
- Ostatnio:ponad 8 lat
- Postów:41
0

- Rejestracja:ponad 21 lat
- Ostatnio:około 3 lata
- Lokalizacja:Space: the final frontier
- Postów:26433
4
Jest też kwestia względnego wzrostu wydajności. inliniowanie funkcji sprawia że oszczędzasz na:
- zapisaniu na stosie adresu powrotu
- skoku do funkcji
- powrocie z funkcji
Teraz jeśli twoja funkcja to jest jedna instrukcja to widać że wykonasz 1 instrukcje zamiast 4, czyli zysk dość spory. Ale jeśli twoja funkcja to jest 996 instrukcji to oszczędasz raptem 0.4% czyli raczej niewiele.
Zarejestruj się i dołącz do największej społeczności programistów w Polsce.
Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.
inlinowania
funkcji.ly000ly000ly000inline
,registry
czy wstawki assemblerowe nie sprzyjają optymalizacjom.inline
to tylko drobna sugestia dla kompilatora ;) Chociażby przy słodziutkich metodach(tak je nazwę, o!) które sprowadzają się do tego, o czym wspomniał @Shalom jest to idealne.inline
ma też inne znaczenie niż tyllko wstawianie kodu w miejsce wywołania. http://4programmers.net/Forum/C_i_C++/253524-funkcje_inline_w_c?p=1148607#id1148607