Refresh TT entry after a cut-off to avoid aging
authorMarco Costalba <mcostalba@gmail.com>
Thu, 29 Apr 2010 17:21:48 +0000 (18:21 +0100)
committerMarco Costalba <mcostalba@gmail.com>
Sat, 1 May 2010 04:09:55 +0000 (05:09 +0100)
Re-save the same TT entry if value is usable and allow
us to cut-off, it means that entry is valuable and
we want to keep it fresh updating the 'generation'
parameter up to the current value.

Patch suggested by J. Wesley Cleveland and better
clarified by Miguel A. Ballicora.

After 999 games at 1+0 64MB hash size
Mod vs Orig +167 =677 -155 +4 ELO

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

index b2b2414ae68eb47f6d2de2101e5bcc198d7f9aa7..1f980fbb78038d6cf098e1b3cafaa37761bfd808 100644 (file)
@@ -1301,6 +1301,9 @@ namespace {
 
     if (tte && ok_to_use_TT(tte, depth, beta, ply))
     {
+        // Refresh tte entry to avoid aging
+        TT.store(posKey, tte->value(), tte->type(), tte->depth(), ttMove);
+
         ss[ply].currentMove = ttMove; // Can be MOVE_NONE
         return value_from_tt(tte->value(), ply);
     }
@@ -1624,6 +1627,9 @@ namespace {
     {
         assert(tte->type() != VALUE_TYPE_EVAL);
 
+        // Refresh tte entry to avoid aging
+        TT.store(pos.get_key(), tte->value(), tte->type(), tte->depth(), ttMove);
+
         ss[ply].currentMove = ttMove; // Can be MOVE_NONE
         return value_from_tt(tte->value(), ply);
     }