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.