質問: プログラムを高速化させるテクニックを、できるだけわかりやすく説明してください。 私が関心が強いのは将棋ソフトですが、それ意外のことでも構いません。 急ぎませんので慌てず回答をお願いします。
回答: 一般的な方針 1. 関数を使わない。全て埋め込む。 関数呼び出し時の処理が結構馬鹿にならないので。 2. ライブラリを使っている場所に注意する。ライブラリを使わずにすむならそれがよい。ライブラリはブラックボックスゆえ高速化の邪魔 3. I/O出力部に注意する。画面出力、標準入出力など。I/Oは高速化のときのネックとなるから。 4. 演算はビット単位で行う。たとえば2のべき乗ならシフト演算。 5. 変数のメモリ配置に気をつかう。メモリアラインがまずいとCPU実行速度に影響する。構造体の設計とか要注意。32ビット境界もしくは64ビット境界にぴったり合わせる。 6. 浮動小数点演算でなく固定小数点演算にする。つまり整数演算。 7. 演算せずに表を使う。九九の表のようなもの。 特殊な方針 1. 人間の入力待ち状態でも計算をする。 2. 人間入力時、マウス位置を監視して、入力位置を予想し先回り演算。