That was discussed often before.Michael Sherwin wrote: A philosophical note:
During the time that I have been trying to come up with a supper fast bitboard move generator for 32 bit machines, Tord Romstad has written a complete new and very strong chess program. I wonder which one of us has used our time more wisley? I consider his sliding-piece bitboard move generator to be horibly slow and yet he has a new program and I do not. My sliding-piece bitboard move generators will run circles around Tord's, but have no legs with which to do it. Anyway, what percentage of the time is used up by just the sliding-piece generators and does it really matter much how fast they are?
Since I have come this far already I will make both BishopAttacks() and RookAttacks() as 32 bit friendly as possible. Then I will build my next program with them regardless of how fast they are or arn't, just because I made them.
Exponential speedup, search, reduction/extension decisions, domain dependent knowledge for eval and such is much, much more inportant, not to mention bugs and strategies or designs to avoid them.
One may consider those bit-twiddling stuff to save a few percent as a waste of time. For me it is hobby and fun and also a nice variation from that what i professionally do as a software developer. And it keeps the brain fit and trains the mathematical understanding
Otoh it is nice to have atomic functions with simple scalar register parameters. To work on a higher abstraction level with it, even with another programming language. It is more convenient and efficient to pass a temporary altered occupied set rather than four rotated bitboards into a function. One may become encouraged to use it more often for hopefully "better" knowledge and algorithms to gain exponential speedup. Whether those functions are a few percent slower or faster doesn't matter so much in terms of elo points
But one percent to the other. There are some thresholds and non-linearities, where a program suddenly becomes a lot slower (or faster), while adding new code and data.
Gerd