Às vezes, os compiladores chamam funções em linha. Isso significa que eles movem o código da função chamada para a função de chamada. Isso torna as coisas um pouco mais rápidas, porque não há necessidade de colocar e colocar coisas dentro e fora da pilha de chamadas.
Então, minha pergunta é: por que os compiladores não incorporam tudo? Suponho que tornaria o executável notavelmente mais rápido.
A única razão pela qual consigo pensar é em um executável significativamente maior, mas isso realmente importa atualmente com centenas de GB de memória? O desempenho aprimorado não vale a pena?
Existe alguma outra razão pela qual os compiladores não apenas incorporam todas as chamadas de função?
Isn't the improved performance worth it?
Para um método que executa um loop 100 vezes e processa alguns números sérios, a sobrecarga de mover 2 ou 3 argumentos para os registros da CPU não é nada.