Computer Chess Club Archives


Search

Terms

Messages

Subject: Re: Perft 5

Author: Magoo

Date: 03:20:00 05/07/03

Go up one level in this thread


On May 07, 2003 at 05:08:43, Uri Blass wrote:

>On May 07, 2003 at 04:57:03, Magoo wrote:
>
>>On May 07, 2003 at 03:56:33, Tim Foden wrote:
>>
>>>On May 06, 2003 at 19:24:23, Magoo wrote:
>>>
>>>>After making alot of functions to macros and alot of other stuff, my program is
>>>>much faster!!
>>>>Perft 5 (without evaluating nodes) gives:
>>>>Depth:5, Nodes:5072212, Time:63 sec, Nps:80511, Value:0
>>>>
>>>>But!! I know other programs (i been looking at mscp and faile) do this
>>>>at least 6 times faster, (that is perft 5 < 10sec).
>>>>I've looked at the source for the programs i compare with, especially faile does
>>>>alot of stuff in the move_generator, mine is smaller, maybe a few more if
>>>>statments.
>>>>Now, if i only could figure out why it is so slow, it shouldn't be!!
>>>>
>>>>Flat profile:
>>>>
>>>>Each sample counts as 0.01 seconds.
>>>>  %   cumulative   self              self     total
>>>> time   seconds   seconds    calls   s/call   s/call  name
>>>> 66.51     42.12    42.12  5087588     0.00     0.00  move_generator
>>>
>>>>  3.65     56.68     2.31  5087587     0.00     0.00  undo_move
>>>>  3.21     58.71     2.03  5087587     0.00     0.00  do_move
>>>
>>>Does your move generate generate all moves in a position in one go, or do you
>>>only generate one move at a time?
>>>
>>>If you are generating all moves in one go, then it looks like you are calling
>>>your movegen in the leaf nodes.  You really should have much fewer calls to your
>>>movegen than to your make/unmake move routines.
>>>
>>>Cheers, Tim.
>>
>>Yes, i do call move_generator in the leaf nodes, i have no better way to check
>>if a move is legal... i look at the moves generated and look for "YxK", that is
>>a move where the king is captured, then i just return -INFINITY and decrease the
>>node count..
>
>You have better ways to do it.
>
>You do not need to generate all moves only to
>check if the king can be captured.
>
>You should only check if the opponent of that king has pieces in the relevant
>squares.
>
>If the white king is at e1 you need only to look at every direction to check if
>there is check from that direction.
>
>For example if you see
>e2 white pawn then you know no check from that direction
>
>Uri

Yes, i have a "in_check" function, it does what you say. I will add this check
before generating moves.



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.