From 4c95edddbf1aaec22c343adaca4796df0137e4c3 Mon Sep 17 00:00:00 2001 From: Stefano Cardanobile Date: Sat, 10 Sep 2016 17:23:26 +0200 Subject: [PATCH] Reorder evaluation start In evaluate, we start by initializing the pos.psq_score and adding the material imbalance. After that, we check whether a specialized eval exists and if yes we return that value and discard whatever we have computed until now. It sounds more logical to first probe material entry and return if we have a specialized eval, and only if it is not the case initialize eval with some values. There is no measurable speed-difference on my computer. Non functional change. --- src/evaluate.cpp | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/src/evaluate.cpp b/src/evaluate.cpp index 35764b71..5e4f4bdd 100644 --- a/src/evaluate.cpp +++ b/src/evaluate.cpp @@ -779,23 +779,22 @@ Value Eval::evaluate(const Position& pos) { assert(!pos.checkers()); + Score mobility[COLOR_NB] = { SCORE_ZERO, SCORE_ZERO }; EvalInfo ei; - Score score, mobility[COLOR_NB] = { SCORE_ZERO, SCORE_ZERO }; - - // Initialize score by reading the incrementally updated scores included in - // the position object (material + piece square tables). Score is computed - // internally from the white point of view. - score = pos.psq_score(); // Probe the material hash table ei.me = Material::probe(pos); - score += ei.me->imbalance(); // If we have a specialized evaluation function for the current material // configuration, call it and return. if (ei.me->specialized_eval_exists()) return ei.me->evaluate(pos); + // Initialize score by reading the incrementally updated scores included in + // the position object (material + piece square tables) and the material + // imbalance. Score is computed internally from the white point of view. + Score score = pos.psq_score() + ei.me->imbalance(); + // Probe the pawn hash table ei.pi = Pawns::probe(pos); score += ei.pi->pawns_score(); -- 2.39.2