Computer Chess Club Archives


Search

Terms

Messages

Subject: Re: Thoughts about board representations...

Author: Brian Richardson

Date: 10:51:06 02/11/00

Go up one level in this thread


I looked at bitmaps vs fanout vs pointer (but not x88 I must confess) and other
methods fairly extensively about 2 yrs ago when first deciding to resurrect my
chess program.  Bitmaps are not clear winners when only looking at move
generation (in fact Gnuchess' pointer scheme is quite fast and rather elegant).

However, bitmap's real advantages come, IMHO, in the eval().  As Bob Hyatt as
pointed out, testing for a passed pawn is simple and fast:

if(!And(mask_pawn_passed_b[sq],tree->wpawns))

What would this test look like with the pointer/piece list scheme?

I can't speak for other programs, but I suspect most programs spend most (est
40+%) of their time in eval(), or comparable functions.

With Intel being the ONLY significant architecture not already fully 64bit, and
soon to be 64 bit with IA-64, why not take advantage of the trend?

Of course, one reason is complexity.  I agree, and chose not to implement
full-blown rotated bitmaps, nevermind incremental attack bitmap updates.  But,
nonrotated are rather straightforward, and that is what I chose to use (at least
initally) with Tinker.

Although I started working on my first chess program in 1971, I am still a
relative newbie by current standards.  Nonetheless, my thinking is that one or
two additional, effective eval terms will more than make up for at most a 20-30%
raw move generation speed difference.



This page took 0 seconds to execute

Last modified: Thu, 15 Apr 21 08:11:13 -0700

Current Computer Chess Club Forums at Talkchess. This site by Sean Mintz.