指し手生成・後の祭り

一日10分ぐらいはパズルゲームと思ってチューニング続行w

飛車と角を持ってる場合持ってない場合で場合わけして15%程度高速化。
199手のほとんどが打手なので、打手に対する改良はダイレクトに効果が出ますね。
(一般に、将棋で手が多い場合は打手が多いのでしょうし)

#1 1164144.4回/sec 100万回time=0.859秒
#2 1172332.9回/sec 100万回time=0.853秒
#3 1166861.1回/sec 100万回time=0.857秒
#4 1146789.0回/sec 100万回time=0.872秒
#5 1157407.4回/sec 100万回time=0.864秒


持ち駒を全パターン作るのも面倒なので、対象局面の状態のパターンだけ作成
(理屈上は全パターン作った場合と同じ速度のはず)

#1 1269035.5回/sec 100万回time=0.788秒
#2 1277139.2回/sec 100万回time=0.783秒
#3 1275510.2回/sec 100万回time=0.784秒
#4 1282051.3回/sec 100万回time=0.780秒
#5 1282051.3回/sec 100万回time=0.780秒

27%速度アップ。これ以上はなかなか速度アップできないかも〜


手の構造関係をいじって150万回/sec超えた!

#1 1531393.6回/sec 100万回time=0.653秒
#2 1529052.0回/sec 100万回time=0.654秒
#3 1531393.6回/sec 100万回time=0.653秒
#4 1526717.6回/sec 100万回time=0.655秒
#5 1533742.3回/sec 100万回time=0.652秒
AVG 1530459.8回/sec


http://d.hatena.ne.jp/LS3600/20091110

■ 追記(2009/11/18)

http://d.hatena.ne.jp/LS3600/20091117にある、BitScanForwardを使うように変更したところ5%ほど高速化しました。
あと、細かいところ少しいじって3%ほど高速化しました。5M回1937[ms]で2.58M/secで記録更新しました

LS3600さんは改良して今は2.58M/secらしい
でも、差は2倍は離れてないのでだいぶ追いついてきました



akiさんもyaneLisp改造してまで指し手の高速化に取り組んでる模様

YaneLispの改造
http://d.hatena.ne.jp/ak11/20091122#p1


forceinlineを増やして1.79M回/secまで来た!

#1 1798561.2回/sec 100万回time=0.556秒
#2 1795332.1回/sec 100万回time=0.557秒
#3 1788908.8回/sec 100万回time=0.559秒
#4 1795332.1回/sec 100万回time=0.557秒
#5 1801801.8回/sec 100万回time=0.555秒
AVG 1795987.2回/sec