Sobes.tech
Junior — Middle

Explique o conceito de inlining de funções e seu impacto no desempenho do programa.

sobes.tech IA

Resposta da IA

A inlining de funções é uma otimização do compilador na qual a chamada de uma função é substituída pelo seu corpo diretamente no local da chamada. Isso elimina os custos associados à chamada de função (transição, preservação do contexto).

No Go, o compilador automaticamente faz inline de funções pequenas se isso melhorar o desempenho.

Vantagens do inlining:

  • Redução do tempo de execução ao evitar a chamada de função.
  • Possibilidade de outras otimizações pelo compilador (por exemplo, propagação de constantes).

Desvantagens:

  • Aumento do tamanho do código compilado (bloat), o que pode afetar negativamente o cache.

Exemplo:

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

func main() {
    sum := add(3, 4) // o compilador pode substituir a chamada a add por 3 + 4
    fmt.Println(sum)
}

Se a função add for inline, a chamada é substituída pela expressão simples 3 + 4, o que é mais rápido.