セクショナリズム関数の排除

A = a + b + c;
B = a - (b + c);

という計算式を

t = b + c;
A = a + t;
B = a - t;

と置き換えることで計算が速くなります(b+cの計算を二回しなくてすむので)。スカラー演算はともかく、ベクトル演算においてはこの種の最適化をコンパイラに期待するのは難しい様で、数行のベクトル演算のソースコードで手作業による最適化をする、しないでコンパイルをした結果のアセンブラを確認したところ、3-4割のアセンブラ行数を削減できました。
他にも最近効果が大きかったのは、
「ワールド座標入力点→ローカル座標入力点→(なんらかの計算)→ローカル座標出力点→ワールド座標出力点」というフローだったものを「ワールド座標入力点→(なんらかの計算)→ワールド座標出力点」
というフローに修正したことです。ある種の演算はローカル座標で計算した方がコーディングはとっても楽になってしかもエレガントに書けるのですが、ワールド-ローカルの変換時に行列-ベクトルの計算が発生してしまいます。1つの座標を変換するのにfloatの乗算が16回、足し算も12回発生するわけで、1点ならまだしも複数の座標に関するなんらかの計算を行なう場合、これがなかなかバカにならないわけです。
ローカル-ワールド変換行列から基底ベクトルを導出しておけば、座標変換時に発生する重い行列-ベクトルの乗算を減らしながら高速にワールド座標での計算結果を求めることができるので旨いです。
今までは分かりやすい書き方を重視していたのだけど、正直重視しすぎていた感もありました。上記のような工夫をちょっとするだけで計算速度ががらっと変わるのを実感しまして、もう少し普段からパフォーマンスに気を使った書き方をできるようになっていきたいな、と。