Computer Chess Club Archives


Search

Terms

Messages

Subject: Re: legal move generator that is 20 times faster than Crafty

Author: Daniel Clausen

Date: 06:17:28 07/02/01

Go up one level in this thread


Hi

On July 02, 2001 at 07:39:11, Uri Blass wrote:

>On July 02, 2001 at 05:12:48, Andrew Williams wrote:
>>I wouldn't care too much about that. Suppose you have loads of stuff in your
>>makemove() that makes it possible to achieve very good move-ordering. Or that
>>makes it very quick to evaluate a node (because much of the work has been done
>>earlier). Then your perft speed will be terrible, but your program could be
>>excellent.
>>
>>Andrew
>
>Thanks, but I know that there are programs that generate only legal moves that
>are faster than Crafty in calculating perft because they do not have to make
>the last move.
>
>My program does not have to do the makemove() in order to know the number of
>legal moves in the last ply because this number is calculated in the gen()
>function but inspite of this it is about 10 times slower than Crafty.
>
>The main problem of my program is the fact that my function of updating the
>arrays is not good and I calculate again a lot of information that is not
>changed.
>
>An example: after a pawn move like a2-a4 the directions that c4 is seen and the
>square that c4 is seen are the same but my program does not know it.
>
>Note that you need to update this information after b2-b4 beacuase it is
>possible that there is a Rook in a4 before the move but my program in this case
>also does a lot of other calculations that are not relevant.
>
>It does not construct all my arrays from scratch except after enpassant move or
>castling(this is also something that needs to be corrected) but it does a lot
>of useless computations.
>
>Uri

I support Andrew's opinion in not worrying too much about speed.

Since you're also a programmer you know that in the beginning (first 20 years in
case of a chess engine? :) everything is re-coded and re-engineered probably
several times. I didn't implement an undoMove function as of yet and I'm pretty
happy about that. (I simply make a copy of the current board and copy it over
the new one instead of calling undoMove()) I'm pretty sure this slows down
things a lot (my board structure is huge, since it's a bitboard-based engine)
but my engine sucks in so many ways that this slowdown is a minor problem.
*smiles*

Regards,

Sargon



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.