À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.