Sobes.tech
Back to questions
Junior — Middle
80

Объясните концепцию инлайнинга функций и его влияние на производительность программы.

Companies where asked
Digital Spirit

Answer from AI

sobes.tech AI

Инлайнинг функций — это оптимизация компилятора, при которой вызов функции заменяется её телом непосредственно в месте вызова. Это устраняет накладные расходы на вызов функции (переход, сохранение контекста).

В Go компилятор автоматически инлайнит небольшие функции, если это улучшает производительность.

Преимущества инлайнинга:

  • Уменьшение времени выполнения за счёт отсутствия вызова функции.
  • Возможность дальнейших оптимизаций компилятором (например, константного распространения).

Недостатки:

  • Увеличение размера скомпилированного кода (code bloat), что может негативно сказаться на кэшировании.

Пример:

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

func main() {
    sum := add(3, 4) // компилятор может заменить вызов add на 3 + 4
    fmt.Println(sum)
}

Если функция add инлайнится, то вызов заменяется на простое выражение 3 + 4, что быстрее.