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.