Computer Chess Club Archives


Search

Terms

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...




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.