From: Marco Costalba Date: Sat, 6 Sep 2008 10:21:08 +0000 (+0200) Subject: TranspositionTable: micro optimize first cycle X-Git-Url: https://git.sesse.net/?p=stockfish;a=commitdiff_plain;h=d786822b92c26d758ea2f2f21368a4cfcce43ca8 TranspositionTable: micro optimize first cycle In the common case (>95%) tte == replace so skip additional comparisons in this case. Signed-off-by: Marco Costalba --- diff --git a/src/tt.cpp b/src/tt.cpp index 66166ce9..328b13e6 100644 --- a/src/tt.cpp +++ b/src/tt.cpp @@ -114,7 +114,7 @@ void TranspositionTable::store(const Position &pos, Value v, Depth d, writes++; return; } - if ((tte+i)->key() == pos.get_key()) + if ((tte+i)->key() == pos.get_key()) // overwrite old { if (m == MOVE_NONE) m = (tte+i)->move(); @@ -122,12 +122,12 @@ void TranspositionTable::store(const Position &pos, Value v, Depth d, *(tte+i) = TTEntry(pos.get_key(), v, type, d, m, generation); return; } - if (replace->generation() == generation) - { - if ((tte+i)->generation() != generation || (tte+i)->depth() < replace->depth()) - replace = tte+i; - } - else if ((tte+i)->generation() != generation && (tte+i)->depth() < replace->depth()) + if ( i == 0 // already is (replace == tte+i), common case + || replace->generation() < (tte+i)->generation()) + continue; + + if ( replace->generation() > (tte+i)->generation() + || (tte+i)->depth() < replace->depth()) replace = tte+i; } *replace = TTEntry(pos.get_key(), v, type, d, m, generation);