Jest to jedna z metod optymalizacji stosowanych przez programistów do przyspieszenia wykonywania wrażliwych na czas sekcji kodu przez kompilatorów. Koszty ogólne wywołania funkcyjnego można usunąć Inlining A funkcjonować, który umożliwia kompilatorowi zastąpienie wywołania funkcji rzeczywistą zawartością funkcji.
Jak używać funkcji inline w C++
Używać funkcje inline W C ++ musisz dołączyć słowo kluczowe „inline” Przed deklaracją funkcji. Oto przykład:
inline int add (int a, int b)„inline” Słowo kluczowe informuje kompilatora do zastąpienia wywołania funkcji w całym kodzie programu faktycznym kodem funkcji. Definicja funkcji jest modyfikowana natychmiast w instrukcji wywołania, a nie przechowywana razem z adresem pamięci instrukcji i ładowana do pamięci.
Ważne jest, aby pamiętać, że Wline Słowo kluczowe prosi kompilatora o coś, a nie wydawać mu polecenia. W niektórych okolicznościach kompilator może zdecydować, aby nie wprowadzać funkcji. Stąd możesz użyć makro zamiast definiowania Wline.
Przykład funkcji wbudowanych
Poniżej znajduje się kod do użycia funkcje inline W C ++:
#włączaćW powyższym programie funkcja setnum () jest identyfikowany jako funkcja inline za pomocą wyrażenia „Inline”. Kompilator zastępuje instrukcję wywoławczą definicją setnum () Kiedy wywoływana jest ta funkcja wbudowana. W rezultacie instrukcja zastępuje 5 setnum () i przechowuje 5 w zmiennej n.
Wyjście
Kiedy używać funkcji inline w C++?
Chociaż koszty ogólne każdego wywołania funkcji może szybko zamontować, funkcje inline może znacznie zwiększyć prędkość programów, które wykonują liczne niewielkie wywołania funkcji. Niemniej jednak, Funkcje inlinujące Czy nie zawsze jest to idealna strategia, ponieważ może sprawić, że kod jest większy i potencjalnie uczynić system buforowania procesora.
Podczas ustalania, czy to wbudować funkcję, Jest kilka rzeczy do rozważenia.
1: Rozmiar funkcji
Rozmiar funkcji jest jednym z najważniejszych elementów. Mniejsze funkcje są zazwyczaj lepszymi kandydatami Inlining ponieważ rzadziej wpływają negatywnie na wielkość kodu i buforowania procesora. Ponadto, ponieważ koszty ogólne wywołań funkcyjnych może stanowić wąskie gardło, funkcje, które są często nazywane lub w bliskich pętlach, są odpowiednimi kandydatami Inlining.
2: Poziom optymalizacji
Należy również wziąć pod uwagę poziom optymalizacji kompilatora. Większość współczesnych kompilatorów ma „Inline” słowo kluczowe, które można użyć do propozycji funkcji Wpisany; Niemniej jednak, jeśli kompilator osądzi, że nie będzie przewagi szybkości, nadal może zdecydować, aby nie wprowadzić funkcji. Wyższe poziomy optymalizacji to miejsce, w którym kompilatory często wykonują bardziej agresywne optymalizacje, więc funkcje, które nie są Wpisany Na niższych poziomach może być również Wpisany na wyższych poziomach.
3: Wpływ inlinowania
Ważne jest również rozważenie wpływu Inlining na wielkości kodu. Chwila Inlining może poprawić wydajność poprzez zmniejszenie kosztów wywołanych funkcji, może również zwiększyć rozmiar kodu, potencjalnie zmniejszając wydajność systemu buforowania procesora. Ogólnie rzecz biorąc, funkcje, które są zbyt duże lub zawierające pętle lub zmienne statyczne, są biednymi kandydatami Inlining.
4: Programowanie mikroarchitektury
Funkcje inline są najczęściej używane w programowaniu mikroarchitektury, w przypadkach, w których koszt ogólny wywołań funkcji jest znaczący. Jest również cenny w tworzeniu małych procedur lub asesorów, które są powołane wielokrotnie w całym kodzie.
Wniosek
Funkcje inline W C ++ są potężnymi funkcjami poprawy wydajności programu, ale ważne jest, aby dokładnie rozważyć wpływ Inlining W zakresie kodu, buforowania procesora i poziomu optymalizacji. Starannie wybierając funkcje, które należy wline i na jakim poziomie optymalizacji, programiści mogą osiągnąć znaczącą poprawę wydajności bez poświęcania wielkości kodu lub czytelności.