Speed up perft
authorMarco Costalba <mcostalba@gmail.com>
Wed, 4 Nov 2009 10:11:04 +0000 (11:11 +0100)
committerMarco Costalba <mcostalba@gmail.com>
Wed, 4 Nov 2009 10:18:05 +0000 (11:18 +0100)
There is no need to do / undo the move at the last ply

No functional change.

Signed-off-by: Marco Costalba <mcostalba@gmail.com>
src/search.cpp

index 3e4341c09031a73e2310a9b1b2e11044ce46beda..c323de5d48f35a62d00e56552449c1255f946f4e 100644 (file)
@@ -332,14 +332,19 @@ namespace {
 
 int perft(Position& pos, Depth depth)
 {
-    if (depth <= Depth(0)) // Replace with '<' to test also qsearch
-      return 1;
-
     Move move;
     MovePicker mp = MovePicker(pos, MOVE_NONE, depth, H);
     Bitboard dcCandidates = mp.discovered_check_candidates();
     int sum = 0;
 
+    // If we are at the last ply we don't need to do and undo
+    // the moves, just to count them.
+    if (depth <= OnePly) // Replace with '<' to test also qsearch
+    {
+        while ((move = mp.get_next_move()) != MOVE_NONE) sum++;
+        return sum;
+    }
+
     // Loop through all legal moves
     while ((move = mp.get_next_move()) != MOVE_NONE)
     {