高津@ドーガです。

私がちょっと前にx86で試した時は、inline 展開によるサブルーチンコールの
オーバーヘッド削減はほとんどありませんでした。
というか、最近のCPUは賢いので、引数がレジスタ渡しにさえなっていれば
サブルーチンコールのオーバーヘッドはほとんど無いって感じです。

かといって inline 展開に意味が無かったわけではなく、関数を跨ったピープ
ホール最適化が出来るという点では効果的でした。
似たような処理がある inline 関数の呼び出しが連続しているところで、
まとめて共通部分式の削除とか、そういうことができると、数倍とか、
そういうオーダーで目に見えて高速化できてしまいます。


記事 <3989148news.pl@insigna.ie.u-ryukyu.ac.jp> で
        Shinji KONOさんは書きました

> レジスタウィンドは「必ずシフトする」ので、いつかウィンドの
> フラッシュルーチンを呼ばないといけない。レジスタウィンドは
> スパースな構造を持っているのでフラッシュが遅い。
> なのでサブルーチンコールを減らすinlineは効果があります。

inline 展開での性能向上を期待するような小さな関数では、その中に
サブルーチンコールなどはあまり無いでしょう。とすると、呼び出しの
深さが1段増えるだけで、それも末端の部分ですから、1度フラッシュして
ウィンドウが確保できれば、あとはレジスタウィンドウが溢れることは
ほとんど無いんじゃないでしょうか。

PROJECT TEAM DoGA 高津正道                            taka2@doga.jp
                                                   TBD00456@nifty.ne.jp
                     PROJECT TEAM DoGAのホームページ → http://doga.jp/
10月24日(金) 今日のマーフィーの法則   [ピーターの予言]
実際に必要かどうかを時間をかけて確認しているうちに、不必要になる。