Re: インライン展開とキャッシュヒット率?
河野真治 @ 琉球大学情報工学です。
In article <YAS.03Oct25073951@kirk.is.tsukuba.ac.jp>, yas@is.tsukuba.ac.jp (Yasushi Shinjo) writes
> > inline 展開での性能向上を期待するような小さな関数では、その中に
> > サブルーチンコールなどはあまり無いでしょう。
> 別に小さい関数にしか inline を付けてはいけないという規則はな
> いので、ぼこぼこ付ける人が出てくるわけです。
たぶん、putchar みたいに、
if (buffer_full()) call_flush()
else buffer_op()
みたいなのが多いんじゃないかな。データ構造に対するアクセサ
もinlineにしたくなるかも知れない。オブジェクト指向的な観点
からだとinlineではだめで、ちゃんとmethod callしないといけ
ないわけですけどね。
関数呼び出しのオーバヘッドは末端にはないんだけど、中間には
あります。段数を減らすと言う意味で有効なんだよね。
最近発見したのは、PowerPCなんかのlink register (戻り番地を覚
えておくための専用のレジスタ(そういや、なんで専用なんだろう?)
が結構有効だってことです。スタックと言うメモリへのアクセスが
減るので高速ですね。ただ専用レジスタなので、それをいじるため
には専用の命令が必要だってのがダサイ。
---
Shinji KONO @ Information Engineering, University of the Ryukyus,
河野真治 @ 琉球大学工学部情報工学科,
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