解析結果

こんな感じでした。evaluate_pos2という局面評価部分が重いのは仕方がないとして、
get_attack_to_pos_allとseeにかなり重いのが気になる。

get_attack_to_pos_allは、あるマスへの利きを持つ駒を全て調べる関数で
seeの計算に使っている。要するに、seeがかなりのボトルネックになっていることが分かる。
simkは盤面配列型で利き情報も保存していないので、これがかなり重くなっている模様。

今回、プロファイル解析をしたのも、sakurapyonさんがseeが重い、という記事を書いていたので
もしや、と思い当ったためです。

simkは合法手を全て生成して、手を全て評価して、オーダリングをやっているため、
sakurapyonさんと同様に、取る手、移動手、置く手で評価を分けた方がよいかも。