AMD CodeAnalyst Performance Analyzer

visualC++でコンパイルしたコード内で、どの関数に時間がかかっているかを検証する
プロファイラーを、AMDが無料で配布しているということで、
ためしに入れてみた。

http://www.amd.com/jp-ja/Processors/DevelopWithAMD/0,,30_2252_3604,00.html


AMD CodeAnalyst™ Performance Analyzer for Windows®
AMD CodeAnalyst™ Performance Analyzer for Linux


の二種類があります。ここではwindows用を入れます。


AMDに会員登録しないとダウンロードページへ行けないようです。無料なんで登録してみます。
説明書も英語なんで、使い方で悩みますが、
適当にプロジェクト名を入れて、アプリ名に、exeファイルを登録して、再生ボタンを押せば、プロファイルが走るようです。
ちなみに、コンパイルするときに、DEBUG情報を入れるオプションをつけてコンパイルする必要があります(VCTK2003では、たとえば/Ziとか)
ちなみに、AMDのプロセッサ以外にも、INTELのCPUでも使えるらしいです。


うちの自作将棋でプロファイルしてみました。

うわー(w
攻撃手のみ生成する関数を、静止探索で使ってるんですが、ほとんどその関数が消費してました(^^;
これはかなり意外でした。


あと、飛び利きは本来差分でやれるんですが、コードが面倒なんで、評価関数でまとめて計算してたら、やっぱり重いらしい(^^;
差分でやるしかないですね。
setKikiは、通常の駒の利きをセットする関数ですが、これは移動時に、差分でやってます。しかし、負荷が大きいことがわかったので、ここは速度を改善する工夫をする価値がありますね。
しかし、プロファイラーというのは便利ですね。
別にマルチスレッド化も、並列化もしてないけど、CPU0とCPU1両方で動いてますね。謎だ。