Author: Tom Kerrigan
Date: 07:22:01 04/24/00
Go up one level in this thread
On April 24, 2000 at 09:27:16, Robert Hyatt wrote:
>On April 24, 2000 at 00:12:06, Tom Kerrigan wrote:
>
>>On April 23, 2000 at 23:24:13, Robert Hyatt wrote:
>>
>>>BTW, this could probably run faster if I wanted. I never intended the perft
>>
>>I'm sure mine could run faster if I wanted, too. My intent was not to test
>>manliness, it was to see if anyone is doing much better than I am.
>>
>>>generator is not screwing up' test... A better test here is to pick a
>>>position and generate or generate/make/unmake moves over and over, without
>>>doing the recursive calls and so forth... or the legality checks, etc...
>>
>>I disagree. If nothing else, this allows the entire benchmark can run out of L1
>>cache, regardless of what typical memory footprint is.
>>
>>>Here is output for Peter's position, generating the moves from the same position
>>>N times, then generating/making/unmaking the moves M times:
>>>
>>>White(1): perf
>>>generated 48000000 moves, time=7.57 seconds
>>>generated 6340818 moves per second
>>
>>Mine does this in 4.911 seconds = 9.77M mps.
>>
>>>generated/made/unmade 48000000 moves, time=38.66 seconds
>>>generated/made/unmade 1241593 moves per second
>>
>>Mine does this in 24.096 seconds = 1.99M mps.
>>
>>So now the question is, why is my program 10% slower than yours for the
>>recursive test when it's about 60% faster at the tests that you proposed? Hmmm.
>>
>>-Tom
>
>
>No clue. You are obviously doing something in the recursive test I am not.
>Don't forget those times are 400mhz times (PII also, 66mhz FSB). Perhaps there
>is a hardware difference as well.
My times are for a 400MHz Celeron, also 66MHz FSB. The cache difference
shouldn't matter because my program should be running out of L1 cache.
During the recursive test, I test the legality of every move. That slows down my
makemove() function by a lot (although it's still faster than Crafty's), but I
can't think of any other way to get accurate results. Other than that, I can't
imagine what we might be doing differently.
void recurse(int depth)
{
int i;
if (depth <= 0) {
++nodes;
return;
}
--depth;
gen(attack(piece[side][0].sq, xside));
for (i = first_move[ply]; i < first_move[ply + 1]; ++i) {
if (!do_move(move[i].m))
continue;
recurse(depth);
undo_move();
}
}
-Tom
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.