Sobes.tech
Junior — Middle

Wyjaśnij koncepcję inline'owania funkcji i jego wpływ na wydajność programu.

sobes.tech AI

Odpowiedź od AI

Inlining funkcji to optymalizacja kompilatora, w której wywołanie funkcji jest zastępowane jej ciałem bezpośrednio w miejscu wywołania. Eliminuje to koszty związane z wywołaniem funkcji (przejście, zachowanie kontekstu).

W Go kompilator automatycznie inlinuje małe funkcje, jeśli to poprawia wydajność.

Zalety inliningu:

  • Skrócenie czasu wykonania przez brak wywołania funkcji.
  • Możliwość dalszych optymalizacji przez kompilator (np. propagacja stałych).

Wady:

  • Zwiększenie rozmiaru skompilowanego kodu (code bloat), co może negatywnie wpłynąć na cache.

Przykład:

func add(a, b int) int {
    return a + b
}

func main() {
    sum := add(3, 4) // kompilator może zastąpić wywołanie add na 3 + 4
    fmt.Println(sum)
}

Jeśli funkcja add jest inline, wywołanie jest zastępowane prostym wyrażeniem 3 + 4, co jest szybsze.