Simplify hashfull calculation.
authorjoergoster <osterj165@googlemail.com>
Mon, 27 Jan 2020 17:53:25 +0000 (18:53 +0100)
committerJoost VandeVondele <Joost.VandeVondele@gmail.com>
Tue, 28 Jan 2020 18:25:39 +0000 (19:25 +0100)
We can simplify the calculation of the hashfull info by looping over exact 1,000 entries,
and then divide the result by ClusterSize. Somewhat memory accesses, somewhat more accurate.

Passed non-regression LTC
https://tests.stockfishchess.org/tests/view/5e30079dab2d69d58394fd5d
LLR: 2.94 (-2.94,2.94) {-1.50,0.50}
Total: 30125 W: 3987 L: 3926 D: 22212
Ptnml(0-2): 177, 2504, 9558, 2642, 141

closes https://github.com/official-stockfish/Stockfish/pull/2523

No functional change.

src/tt.cpp

index 080d3a6bd480006e4c821661d2ec9800a4b7523b..46860fe900df5b9157d3cbafa5e932c688e0de83 100644 (file)
@@ -148,9 +148,9 @@ TTEntry* TranspositionTable::probe(const Key key, bool& found) const {
 int TranspositionTable::hashfull() const {
 
   int cnt = 0;
-  for (int i = 0; i < 1000 / ClusterSize; ++i)
+  for (int i = 0; i < 1000; ++i)
       for (int j = 0; j < ClusterSize; ++j)
           cnt += (table[i].entry[j].genBound8 & 0xF8) == generation8;
 
-  return cnt * 1000 / (ClusterSize * (1000 / ClusterSize));
+  return cnt / ClusterSize;
 }