mirror of
https://github.com/sockspls/badfish
synced 2025-04-30 08:43:09 +00:00
Skip evaluate() call after a null move
Reuse the evaluation of the parent with inverted sign and set margin to zero (this is an hack!). This is done only in qsearch where almost 15% of calls are from a null move. In normal search the number of nodes where (ss-1)->currentMove == MOVE_NULL is almost zero and so there is no need of using this trick. The big advantage of this patch is a speed-up due to skipped evaluate() calls, that are very costly. Functionality is of course affected and we will need to proper test it later. For now we just register a 3-4% speed up. Suggested by Hongzhi Cheng. bench: 5051328
This commit is contained in:
parent
a87831230d
commit
37e9802411
1 changed files with 5 additions and 0 deletions
|
@ -1154,6 +1154,11 @@ split_point_start: // At split points actual search starts from here
|
|||
if (ss->staticEval == VALUE_NONE || ss->evalMargin == VALUE_NONE) // Due to a race
|
||||
ss->staticEval = bestValue = evaluate(pos, ss->evalMargin);
|
||||
}
|
||||
else if ((ss-1)->currentMove == MOVE_NULL)
|
||||
{
|
||||
ss->staticEval = bestValue = -(ss-1)->staticEval;
|
||||
ss->evalMargin = VALUE_ZERO; // Hack, we really don't know the value
|
||||
}
|
||||
else
|
||||
ss->staticEval = bestValue = evaluate(pos, ss->evalMargin);
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue