閑古鳥

オールドプログラマの日記。プログラミングとか病気(透析)の話とか。

関数ポインタをインライン関数に入れる

条件によってデータに書ける処理を変更したい場合に、関数ポインタを使って動的に処理を切り替えようと次のようなコードを書きました。

typedef double (*Executer)(double);

double nantoka_function(int type)
{
	double value = tekito;
	Executer f = GetFunc(type);
	return f(value);
}

で、割とパフォーマンスが重要な箇所なので、Executerになるいろいろな関数はインライン関数にしました。しかし、上記のようなコードの場合、パラメータは実行時にしか受け取ることができないので、どう考えてもインライン展開などされるはずがないではないか…と最近になって気が付きました。ただここはもう無理に展開して書いてもパフォーマンスの向上は見られないので、保守性を取ってこのままにしておくつもりですが、今後は気をつけないと。

仕様を理解していないで使っている部分が多くて間違い/勘違いに気付く事が多いこの頃ですが、そのうち致命的な事をやってしまうのではないかと思うと胃が痛いです。規格書くらい買うべきだろう…とは思うんですが、英語読めないしなぁ。というか、このくらいの意識でやるのは当然だと思っていたけれど、ネットとかで見ていると職業プログラマは逆にこういうところいい加減な人の方が多いみたいで、こんなんでいいんでしょうか、とも自分の事を棚に上げて思ってしまいます。デスマ中にそんなことを気にする余裕なんて無いということでしょうか。