ここの記事に、_BitScanForward64を使う場合、ヒットしたビットを0にするのに、
n &= n - 1;
とするとよいと書かれていたので試してみた。
現在、ビットを0にするのに、
_bittestandreset64(&n, i);
を使用している。
記事では、下記のように1をシフトして演算した場合との比較なので、_bittestandreset64を使う場合は差はないと予測した。
n ^= 1 << i;
測定結果、わずかながら高速化する箇所があった。
19路、10000プレイアウトの1手目で、平均1219msから1188msになった。
約2.6%の高速化である。
何か所か_bittestandreset64を使っている箇所があったので、それぞれの場所で試してみたが、箇所によっては効果がないか逆に遅くなる箇所があった。
_bittestandreset64を使う場合は、それほど気にする必要はないようだ。