指し手生成の高速化(まだ続くのかw)
初期局面じゃなくて例の局面のやつ
今日のところは1.92M回/sec
#1 1921598.8回/sec 500万回time=2.602秒 #2 1923076.9回/sec 500万回time=2.600秒 #3 1923076.9回/sec 500万回time=2.600秒 #4 1927525.1回/sec 500万回time=2.594秒 #5 1923076.9回/sec 500万回time=2.600秒 AVG 1923670.8回/sec
■ 追記(2009/11/18) http://d.hatena.ne.jp/LS3600/20091117にある、BitScanForwardを使うように変更したところ5%ほど高速化しました。 あと、細かいところ少しいじって3%ほど高速化しました。5M回1937[ms]で2.58M/secで記録更新しました。
LS3600さんは11/18付けで2.58M/secとのこと。1週間経ってるのでもっと速くなってるでしょう(^^;
指し手の書き込みにシフトを用いずに8bitレジスタを利用する件は、
register partition stallが発生して遅くなるそうですが、
_index_の更新処理などをはさみこむことで、pipelineのstageが干渉しない程度に
命令を離すことはできるんじゃないかあと思います。
実際にベンチマークで高速化が確認できたら、また日記に書こうと思います。