よくわからないが、
DevPartner Profiler Community Edition
は.NET Framework SDKを使ったプロジェクトしか動作しない
と思ってたのだが、gems1の埋め込み式の
profilerをインクルードしたソースファイルを組み込んでコンパイルしたら
変更したソースだけ解析を行ってくれた。
ということは、もしかして全コンしたら大丈夫なのか!?
でもとりあえず面倒なのでどうしてかまでは
必要になったときに調べるとして、
gems1の埋め込み式profileと上記の
プロファイラの値を比較してみた。
(埋め込み式結果)
//--------------------------------------------
// プロファイラ結果
//--------------------------------------------
// Ave : Min : Max : # : Profile Name
//--------------------------------------------
// 27.5 : 27.5 : 27.5 : 1286887 : KikiGenerater
// 0.4 : 0.4 : 0.4 : 1 : PDS tume func
// 1.0 : 1.0 : 1.0 : 22741 : MoveGenerater
// 31.8 : 31.8 : 31.8 : 29911 : PVS_min
// 2.0 : 2.0 : 2.0 : 5541 : MakeMove
// 8.3 : 8.3 : 8.3 : 1051 : MoveSelectGenerater
// 22.5 : 22.5 : 22.5 : 29908 : PVS_max
// 0.2 : 0.2 : 0.2 : 1685 : set_move_te
(ツールの結果出力)
まず、解析結果からいうと
どうやらKikiGeneraterで処理がめちゃくちゃ食っているらしい。
確かにこの利き生成は飛び駒の移動先に駒があればさらに陰の利きや
影響のある利きを再帰的に検索するので遅いのかもしれない。
(ただ埋め込み式の場合コール回数については再帰的なものを一回とカウントしているので
劇的に数が膨らんでいるが・・・)
で、プロファイラについていうと、
gemsの埋め込み式プロファイラ。
必ず関数をStartとEndでくくらないとだめなため、
自分を呼ぶときに一回Endをコールしないといけないため
再帰関数の測定にはかなり不向きである。
ただ、特定の関数のみ測定できるので使い勝手はよい。
(本来はもっと基底で定義するのが正しいのだろうけど・・・)
続いて、ツールの出力。
まだ使い始めたところなのでなんともいえないが、
もし本当に埋め込み式のプロファイルをインクルードするだけで動くのならば
かなり使い勝手はよい。
値も多分適正だろう。
ON/OFFもメニューから選択できるし、
調べたい時だけ調べられるので便利である。
以上から.NETでは
DevPartner Profiler Community Edition
を使ってプロファイルするのがよさそうである。
(なぜ動作するか調べてないから怖いけど・・・)
ちなみに
上記の□で囲んである時がON
下記の囲んでない時がOFFである。