Computer Chess Club Archives


Search

Terms

Messages

Subject: Re: Benchmarking chess algorithms

Author: Dan Homan

Date: 10:19:09 07/20/99

Go up one level in this thread


On July 20, 1999 at 12:53:31, KarinsDad wrote:

>On July 20, 1999 at 12:47:29, Dan Homan wrote:
>
>>On July 20, 1999 at 12:12:14, Dann Corbit wrote:
>>
>>>I think it would be interesting to benchmark chess algorithms:
>>>0. Move generators -- all types
>>
>>This one is do-able by restricting ourselves to moves generated per
>>second in a standard position.  From the opening, EXchess
>>generates approximately 3.0 million moves per second on a 400 MHz Cel.
>>The move generation algorithm is a simple loop over the board (stored
>>as a 64 square array) with simple logic checks to find the boundry.
>>
>>For generate/make/unmake EXchess preforms approximately 600,000 moves
>>per second on the 400 MHz Cel.  My make involves a position copy, so
>>I don't do an unmake routine.  The formula here is 1) generate all
>>the moves from a given position 2) make/unmake each move in turn
>>3) count the moves generated/made/unmade.
>>
>
>What if your program only generates legal moves and there is no unmake?

Ahhh, but that is exactly the point!  Is generating only legal moves
better or worse for the generate/make/unmake cycle?  Is not having
an unmake (such as in EXchess) good or bad?

The legal move checking in make (or move generation) is a little
sticky, because if you don't do it, you slow down other parts of
the search slightly (because you have to catch the illegal moves
somewhere).

I agree that everyone does things differently, and it is a
very good idea to lists the caveats when comparing the algorithms.
However, it would be interesting to get a feel for how the algoritms
stack up - by getting a large number of programs to contribute data
we can hopefully average over some of the differences or (better yet)
compare programs that are, other than the choice of a particular
algorithm, rather similar.

One of the most interesting uses might be as a reference for starting
programmers.  If they are doing 0x88 and getting 100,000
generates/makes/unmakes a second, they might be interested in knowing
that a more established program is getting 1,000,000 on a similar
machine.  Maybe they'll discover that they are doing more during
generate/make/unmake, such as updating attack tables or something,
which explains the difference - or maybe it will help them find
an inefficiency.

>
>Again, I am skeptical. All of this is similar to the nodes per second issue
>where each implementation (sometimes from one version of the same program to the
>next) is different.
>

True, but I have found it very useful to compare my nps to other programs
during development.  Initially, I was much, much slower - due only to
inefficiencies in my code - if there weren't other numbers to compare
to, I might not have found those inefficiencies for a long time.

Now I am curious about inefficiencies in my design choices, so I like
Dann's idea very much.

 - Dan

>KarinsDad :)



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.