Typical performance gains for bitboard move generators

Discussion of chess software programming and technical issues.

Moderator: Ras

Mpsey

Re: Typical performance gains for bitboard move generators

Post by Mpsey »

bob wrote:
Mpsey wrote:Hi all,

I was wondering what are typical performance gains for bitboard-based move generators. I use a standard bitboard representation for the time being and am getting a 24% increase in performance over my non-bitboard chess engine for generation of pseudo-legal moves on my x64 machine.

I am very unhappy with this result as I expected a much larger improvement in performance. I am asking if there are any benchmarks for typical performance gains with each board representation. Am I on the right track? Or is this simply bad.

I would like to mention that for generating raw move bitboards (move-target bitboards) my program is impressively fast (In my opinion :D), but there seems to be a bottleneck on move serialization.
You should not expect too much. Move generation is a small part of the total execution time in a fairly mature chess program. Bitboards help elsewhere, such as in evaluation where the "bit parallel" operations can save time, examples include "is this pawn passed?" which can be done in one AND operation, or "can this square ever be attacked by an enemy pawn?" also a one AND operation. The savings add up across the pieces of the engine.
Thanks for the advice Professor Hyatt. My engine is anything but mature at the moment but but I hope I'm on the right track.

I read your paper on rotated bitmaps and found it very interesting and an excellent resource.