SPARC アーキテクチャや 64bit x86(AMD64)における性能劣化が小さいのは、引数渡しにレジスタを使用する ABI(Application Binary Interface)である(※2)ことから、使用頻度の高い(=レジスタに乗り易い)局所変数値の引数渡しであれば、レジスタ間コピーのみのオーバヘッドで済むためだと思われます。 6つの引数を積むオーバヘッドがそれぞれ2.0と0.1(!)ですから、スーパースケーラ(superscalar)アーキテクチャの面目躍如といったところでしょうか? その一方で、32bit x86アーキテクチャの性能劣化が大きいのは、引数渡しにスタックを使用する仕様であるため、局所変数参照でもスタック(=メモリ)からの書き込みが発生するためでしょう。 (CPU クロックと比較して)低速なメモリへのアクセスがあるにも関わらず、概ね引数の数と同程度のクロックの遅
