コンパイラはインライン関数呼び出しを行う場合があります。つまり、呼び出された関数のコードを呼び出し元の関数に移動します。これにより、コールスタックのオン/オフを切り替える必要がないため、処理が少し速くなります。
だから私の質問は、なぜコンパイラはすべてをインライン化しないのですか?実行可能ファイルが著しく高速になると思います。
私が考えることができる唯一の理由は、実行可能ファイルが非常に大きいことですが、最近では何百GBものメモリが必要なのでしょうか?パフォーマンスの向上はそれだけの価値はありませんか?
コンパイラがすべての関数呼び出しをインライン化しない他の理由はありますか?
Isn't the improved performance worth it?
ループを100回実行し、いくつかの深刻な数値を処理するメソッドの場合、2つまたは3つの引数をCPUレジスタに移動するオーバーヘッドはありません。