Udostępnij za pośrednictwem


Kiedy należy używać funkcji śródwierszowych

Funkcje wbudowane najlepiej nadają się do małych funkcji takich jak te, które pozwalają uzyskać dostęp do prywatnych elementów danych.Głównym celem tych jedno- lub dwulinijkowych "metod dostępu" jest zwrócenie informacji o stanie obiektów; krótkie funkcje są wrażliwe na obciążenie związane z wywołaniem funkcji.Dłuższe funkcje tracą proporcjonalnie mniej czasu na sekwencję wywołania/zwrócenia i w związku z tym dostarczają mniej korzyści z wbudowania.

Przykład

Klasa Point przedstawiona w Wynikach wywołania funkcji może być zoptymalizowana w następujący sposób:

// when_to_use_inline_functions.cpp
class Point
{
public:
    // Define "accessor" functions as
    //  reference types.
    unsigned& x();
    unsigned& y();
private:
    unsigned _x;
    unsigned _y;
};

inline unsigned& Point::x()
{
    return _x;
}
inline unsigned& Point::y()
{
    return _y;
}
int main()
{
}

Zakładając, że manipulacja współrzędnymi jest stosunkowo często wykonywana w kliencie takiej klasy, określając dwa akcesory (x i y w poprzednim przykładzie) jako inline z reguły oszczędza się narzut związany z:

  • Wywołaniem funkcji (włączając przekazanie parametrów i umieszczenie adresu obiektu na stosie)

  • Zachowaniem ramki stosu wywołującego

  • Ustawieniem nowej ramki stosu

  • Komunikacją związaną ze zwracaną wartością

  • Przywróceniem starej ramki stosu

  • Zwrot

Zobacz też

Informacje

inline, __inline, __forceinline