Funkcje inline - wielkość a wydajność

0

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.

4

Ponieważ może nie starczyć rejestrów i będziesz ostatecznie miał jedną, dużą funkcję zajmując pełno rejestrów oraz miejsca na stosie.

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.
0

Ok, dzięki za wyjaśnienie.

1 użytkowników online, w tym zalogowanych: 0, gości: 1