Permalink
Browse files

Do not use evaluate() for razoring

Because razoring is reached 10% of times and about 50% of time
first two conditions are met we can save 5% of calls to the fairly
costly evaluate().

On the other side statistics have shown 95% of nodes that pass
the first two razoring conditions pass also the evaluate() test.
So the risk of dropping the third condition seems low enough.

Testing seems to validate this.

Signed-off-by: Marco Costalba <mcostalba@gmail.com>
  • Loading branch information...
1 parent 67f975e commit 060eef4f4e97ea1261252256c6768b243b7d3de5 @mcostalba committed Sep 23, 2008
Showing with 1 addition and 3 deletions.
  1. +1 −3 src/search.cpp
View
4 src/search.cpp
@@ -1122,9 +1122,7 @@ namespace {
}
}
// Null move search not allowed, try razoring
- else if ( depth < RazorDepth
- && approximateEval < beta - RazorMargin
- && evaluate(pos, ei, threadID) < beta - RazorMargin)
+ else if (depth < RazorDepth && approximateEval < beta - RazorMargin)
{
Value v = qsearch(pos, ss, beta-1, beta, Depth(0), ply, threadID);
if (v < beta)

0 comments on commit 060eef4

Please sign in to comment.