Computer Chess Club Archives


Search

Terms

Messages

Subject: Re: Bitboards and Piece Lists

Author: Dan Newman

Date: 02:15:15 06/16/01

Go up one level in this thread


On June 14, 2001 at 19:34:09, Dann Corbit wrote:

>Using this "darn-fast" branchless first-bit location routine:
>int FirstPiece(BITBOARD bits)
>{
>//    if (bits == 0) return -1;
>__asm {
>;       64-bit number to move into ECX:EBX, will never be zero!
>        mov ecx,dword ptr [bits+4]
>        mov ebx,dword ptr [bits]
>        bsf eax,ecx
>        add eax,32
>        bsf eax,ebx
>      }
>}
>
>I would think that iterating over the board would be just as fast (or possibly
>faster) than using piece lists.
>
>I am curious if others who use bitboards find piece lists to be valuable.
>I am somewhat surprised to see that FirstPiece() is consuming a lot of CPU.


I tried the above trick to make Shrike's next_one() function branchless
and got > 5% speedup :).  Thanks, Dann!  It's not every day I get that
much...

I found it a little bit faster to use the bitboard halves directly as
bsf operands (maybe due to using fewer registers and fewer instructions):

    __asm {
        mov ebx, this
        bsf eax, [ebx].upper
        add eax, 32
        bsf eax, [ebx].lower
    }

The above is inside a member function of the bitboard class which is why
I have the "mov ebx, this" line.

As far as piece lists go, I was *very* happy to be able to get rid of
them when I went over to bitboards.  In fact I think of the bitboards as
piece lists quite frequently.  All that trouble keeping the piece lists
up-to-date is removed which is perhaps the principal reason I like
bitboards...

If by iterating over the board you are refering to the array board
of a non-bitboard program, that's actually quite a bit slower than
using piece lists.  (I've tried it.)  But if you are refering to
extracting piece coords from bitboards, I actually think that that can
be as fast or faster, except in the endgame where short piece lists
will tend to win.

-Dan.



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.