河野真治 @ 琉球大学情報工学です。

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, 
河野真治 @ 琉球大学工学部情報工学科,