http://questionbox.jp.msn.com/qa4721691.html
[命令キャッシュ] (1)if文のelse/switch等の分岐を避ける。特に大きなコードを含んだ分岐で飛び越すのは避けた方がよい。 (2)処理の回数や時間が長い処理を出来るだけif文の条件が真になる時に通るようにする。 (3)関数やクラスの呼び出しを極力避ける。呼び出す場合は出来るだけ戻ってこない時間の掛かる処理にする。 [データキャッシュ] (1)データは極力シーケンスにアクセスする。ランダムアクセスする場合も広範囲にアクセスしないように工夫する。 (2)データのアクセスとアクセスは出来るだけ間隔を空けて、レジスタ内で処理をするコードを心がける。 (3)スレッドなどCPUコア間で同期が必要な処理は避ける。データキャッシュのフラッシュが起こる可能性があるため。 上と合わせて、コンパイラ出力のアセンブラレベル命令コードを毎回確認して、無駄なコードが出ていないか確認する。