Sobes.tech
Junior — Middle

Vysvětlete koncept inliningu funkcí a jeho vliv na výkon programu.

sobes.tech AI

Odpověď od AI

Inlinování funkcí je optimalizace kompilátoru, při které je volání funkce nahrazeno jejím tělem přímo na místě volání. To odstraňuje náklady spojené s voláním funkce (přechod, zachování kontextu).

V Go kompilátor automaticky inlinuje malé funkce, pokud to zlepšuje výkon.

Výhody inlinování:

  • Zkrácení doby běhu díky vynechání volání funkce.
  • Možnost dalších optimalizací kompilátoru (například propagace konstant).

Nevýhody:

  • Zvýšení velikosti zkompilovaného kódu (code bloat), což může negativně ovlivnit cache.

Příklad:

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

func main() {
    sum := add(3, 4) // kompilátor může nahradit volání add za 3 + 4
    fmt.Println(sum)
}

Pokud je funkce add inline, je volání nahrazeno jednoduchým výrazem 3 + 4, což je rychlejší.