charは遅い
matiid1.csaを8手固定で探索(王手などを探索延長しているので実際は8手以上読むことになる)
1手目 先手 ▼v歩五v銀v飛 9 8 7 6 5 4 3 2 1 ---------------------------+ v香 飛 ・ 角 ・ ・ ・v桂v香|一a ・ ・v金v歩 ・ ・ ・ ・ ・|二b v桂v金v王 ・ 馬v銀v歩 歩v歩|三c ・v銀 ・ ・v歩 ・ ・v歩 ・|四d v歩 ・ ・ ・ ・ 銀 ・ ・ ・|五e ・ 歩v歩 ・ ・ ・ ・ ・ ・|六f 歩 ・ ・ ・ ・ ・ 歩 ・ 歩|七g 香 金 金 ・ ・ ・ ・ ・ ・|八h 玉 桂 ・ ・ ・ ・ ・ 桂 香|九i ---------------------------+ △ 歩 4( 2135)* 5( 19120)* 6( 15458)* 7( 104309)***** 8( 36570)** 9( 187697)******** 10( 66103)*** 11( 192704)******** 12( 44809)** 13( 715509)***************************** 14( 137266)****** 15( 664726)*************************** 16( 106951)***** △74歩打 time=27.0秒 nps=238.37K
頻繁に呼び出されるループの深部に位置するSEEのcharを使ってる部分をintにしてみる
△74歩打 time= 25.6秒 nps=251.46K
これだけで1.4秒も高速化。
intって32ビットってことで、実際longと同じですね。
どうしてもint=16bitって意識が消えないです(^^;
この点の地味〜な高速化もこつこつやってみましょう。
手の構造体なんかもchar使ってるのでintにしたら速度アップ狙えそう。
千日手はハッシュ履歴を見て比較でやってるんですが、うまく動かないです。
なんかハッシュの値がおかしい。ハッシュバグってるかも?(これはヤバイ)