Go言語もつらつらと使ってきているが,用途を限ってきたので速度を気にしているのは大量の計算をさせているときくらいになった。
以前からforのループが致命的に遅くその辺はあきらめていたが今回確認してみた。
参考にしたのは上記の記事。
使ったのは数値解析コードでなく自作の将棋エンジン(笑)
結果分かったのは指し手生成部分より局面評価関数が重いってこと。
単純なループを回しているだけなんだがGo言語だと一度内部にリストを作ってからループが回るらしく単純なループほどCやC++に差をつけられる。
ちょっとだけループ展開と演算順序の入れ替えをしたが一応計測できるレベルの高速化ができた。
といっても,ループが遅くSIMD演算も使えないようじゃボチボチ限界だなぁ。