# Computer Chess Club Archives

## Messages

### Subject: Bean counters Part1

Author: Peter Fendrich

Date: 11:50:31 08/19/98

```A while ago a Elisabeth van Aaaring raised the question about different methods
to count ones in a bitboard. She made som testings and among other things she
found a breakpoint between method A and B (see below) at about 6-7 bits. When
less ones, method A was the best otherwise method B was best.

I extended this test a bit by inserting the different methods in my program
Terra, not known to the world..., and meassuring the performance for 10
different positions.

Here are the results.

Method A (like Crafty):
.............................................
register unsigned __int64 a = TheBoard.all;
while( a ) {
c++;
a &= a - 1;
}
return c;
.............................................

Pos    Time Iter Mve#     Nodes    N/S
d1      109   10    1   3387534  31078
d2      135    9    2   4527468  33536
d3      120    8    5   3001296  25010
d4       91    8    5   2733457  30037
d5       91    9    9   3804363  41806
N1       94    8   31   3887771  41359
N2       91    9    7   2786247  30618
N3      113    9    1   3388985  29991
N4       91    8   14   3323877  36526
N5       99    9    1   4546407  45923
----   --       -------- ------
Total: 1034   87       35387405
Mean:  103    9                 34224

Method B ( A hybrid between an idea from Bruce M and Method A)
.............................................
register unsigned __int64 a = TheBoard.all;
if( !a )
return( 0 );
else if( !( a &= a - 1 ) )
return( 1 );
else if( !( a &= a - 1 ) )
return( 2 );
else if( !( a &= a - 1 ) )
return( 3 );
else if( !( a &= a - 1 ) )
return( 4 );
else if( !( a &= a - 1 ) )
return( 5 );
else
for( register UINT count = 6;; count++ ) {
if( !( a &= a - 1 ) )
return( count );
}
.................................................

File   Time  Iter Mve#    Nodes    N/S
d1      112   10    1   3395943  30320
d2      140    9    2   4464433  31888
d3      130    8    7   3106604  23896
d4       93    8    4   2690745  28932
d5       92    9    9   3618150  39327
N1       92    8   25   3659710  39779
N2       96    9    7   2819829  29373
N3      118    9    1   3382772  28667
N4       94    8   14   3313512  35250
N5      100    9    1   4456459  44564
----   --       -------- ------
Total: 1067   87       34908157
Mean:   107    9                 32716

Will continue...

```