O que significa enfileirar uma função e como ela afeta um programa?

Resposta

Uma função inline é aquela para a qual o compilador copia o código da definição da função diretamente para o código da função que está chamando, ao invés de criar um conjunto separado de instruções na memória. Isto elimina a sobrecarga de ligação de chamadas e pode expor oportunidades significativas de otimização. Usando o especificador “inline” é apenas uma sugestão para o compilador de que uma expansão inline pode ser executada; o compilador é livre para ignorar a sugestão.
Alguns dos efeitos de inlining são:

  1. Na maioria dos casos, o inlining aumenta o tamanho do programa. Mas em alguns casos, quando o tamanho da função é menor que o tamanho do código da chamada de função, o inlining poderia reduzir o tamanho do programa.
  2. Na maioria dos casos, o inlining poderia melhorar o tempo de execução, evitando a sobrecarga da chamada, e possível ver-através do otimizador (tornando-a uma função não opaca) para mais oportunidades de otimização. No entanto, se a função não for chamada com frequência, não terá uma melhoria visível no tempo de execução.
  3. Inlining aumenta o acoplamento prático, fazendo com que o chamador confie potencialmente nos detalhes internos de implementação do código. O problema com o acoplamento prático é que quando a callee inlined muda, você tem que recompilar o chamador. Este é um custo para construir e tempo de desenvolvimento.

A melhor abordagem seria manter o inlining até que você termine de traçar o perfil do seu programa. Isto vai ajudar a determinar se você obtém algum benefício adicional com o inlining.

Deixe uma resposta

O seu endereço de email não será publicado.