時間計測について、つづく

今朝目が覚めたとき、ハッシュ関連のバグに気が付きました。
エントリ数を制限するようなロジックを入れたにも関わらず、それが間違っていて、制限が機能していませんでした。

他にもバグを見つけましたが、それが正しく時間計測できない理由というわけではなく、犯人は他にいました。
Javaのヒープ領域が大きすぎ、OSなどが使っている領域と合わせて、実メモリの大きさを超えてしまい、スローダウン状態になっていたのが、原因のようです。
ヒープ領域を小さくし、メモリ使用率が最大でも90%くらいに収まるようにしてみたら、問題は起きなくなっています。

メモリスワップなどの状況は、Windowsではパフォーマンスモニタ(管理ツール→パフォーマンス、等)で調べるのが一般的のようですね。

Vistaにしてから存在を忘れていました。ありがとうございます。(起動方法が変わったようです)
ページファイルへのアクセスが急増して、ディスクアクセスが著しく遅延し、応答時間が秒単位になっている状況などが見て取れました。

このほか、正しく時間計測できない理由として、指し手が入力されてからそれが時間計測しているスレッドによって検出されるまでに時間がかかってしまう、という場合があります。

現在のところ、先読みはオフでテストしているので、この点はあてはまらないようです。
ただこの問題の意識はしていて、対策も試みていますが、効果はまだ確かめていません。。