合法手生成(ビットボード使用)

...とまあオリジナル無明の合法手生成はどーしようも無いほど遅かった(ベンチマークで毎秒15万回)のでキチンと作り直しました。

テスト用の盤面は

 9  8  7  6  5  4  3  2  1 
ky .. .. .. .. .. .. ke ky a
.. .. .. .. .. TO .. ki oh b
.. .. ke fu .. GI .. .. .. c
fu .. fu .. .. .. .. FU fu d
.. .. .. FU .. .. GI fu .. e
.. FU FU ka .. .. FU .. FU f
FU .. .. .. .. .. KI GI .. g
HI .. .. .. .. .. .. .. .. h
KY KE .. .. .. .. ka OH KY i

{P1: FU=0, KY=0, KE=0, GI=0, KI=1, KA=0, HI=1, OH=0}
{P2: FU=5, KY=0, KE=1, GI=1, KI=1, KA=0, HI=0, OH=0}

...こんなかんじ。後手番で10,000,000回繰り返して時間を計測です...

ラップトップ(T9300 2.5GHz) ~6.3秒 ⇒ 毎秒 約160万回 ~10.6秒 ⇒ 毎秒 約94万回
デスクトップ(i7 920 2.66GHz) ~4.9秒 ⇒ 毎秒 約205万回 ~8.8秒 ⇒ 毎秒 約110万回

お~!!!105倍以上速くなりました!(あとは強くするだけね)

ちなみに初期局面を計測すると...

ラップトップ(T9300 2.5GHz) ~4.7秒 ⇒ 毎秒 約210万回 ~7.6秒 ⇒ 毎秒 約130万回
デスクトップ(i7 920 2.66GHz) ~3.8秒 ⇒ 毎秒 約260万回 ~6.0秒 ⇒ 毎秒 約165万回

...となりました。

投稿者: 紫外線 投稿日時: 火, 05/18/2010 - 10:55 categories [ ]

コメントの表示オプション

お好みの表示方法を選択し、「設定の保存」をクリックすると、表示方法を変更することができます。

痛恨のバグ

...で、今回は盤面の情報に「利き」の情報も盛り込もうと頑張っていたのですが...

テスト中にJavaに致命的なバグを発見(Sunのバグデータベース通報に通報しました)...その為に我のプログラムが不当に速く走っているかのように見えました。(涙涙涙)

直した結果が以上の通りどす。まあそれでも以前より速くなったので不満は無いですが...

Java 1.7

今回のベンチマークに使用したのはまだ開発途中のバージョン1.7なのですが、1.6と比較してかなり速くなっています。

>ラップトップ(T9300 2.5GHz) ~6.3秒 ⇒ 毎秒 約160万回 ~14秒 ⇒ 毎秒 約70万回

1.6でテストすると9 25秒位に落ちます。

コメントの表示オプション

お好みの表示方法を選択し、「設定の保存」をクリックすると、表示方法を変更することができます。