Re: インライン展開とキャッシュヒット率?
高津@ドーガです。
私がちょっと前に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日(金) 今日のマーフィーの法則 [ピーターの予言]
実際に必要かどうかを時間をかけて確認しているうちに、不必要になる。
Fnews-brouse 1.9(20180406) -- by Mizuno, MWE <mwe@ccsf.jp>
GnuPG Key ID = ECC8A735
GnuPG Key fingerprint = 9BE6 B9E9 55A5 A499 CD51 946E 9BDC 7870 ECC8 A735