A volte i compilatori chiamano le funzioni in linea. Ciò significa che spostano il codice della funzione chiamata nella funzione chiamante. Questo rende le cose leggermente più veloci perché non c'è bisogno di spingere e pop cose dentro e fuori dallo stack di chiamate.
Quindi la mia domanda è: perché i compilatori non incorporano tutto? Presumo che renderebbe l'eseguibile notevolmente più veloce.
L'unica ragione a cui riesco a pensare è un eseguibile significativamente più grande, ma conta davvero in questi giorni con centinaia di GB di memoria? Le prestazioni migliorate non valgono la pena?
C'è qualche altro motivo per cui i compilatori non incorporano solo tutte le chiamate di funzione?
Isn't the improved performance worth it?
Per un metodo che eseguirà un ciclo 100 volte e scricchiolerà alcuni numeri seri, il sovraccarico di spostare 2 o 3 argomenti nei registri della CPU non è niente.