From 8654fee18cfc503361d621ccd127a6444e931d25 Mon Sep 17 00:00:00 2001 From: Marco Costalba Date: Thu, 23 Jul 2009 18:30:56 +0100 Subject: [PATCH] Microptimization in do_evaluate() Do not call count_1s_max_15() if not necessary, as is not in the common case (>95%). No functional change. Signed-off-by: Marco Costalba --- src/evaluate.cpp | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/evaluate.cpp b/src/evaluate.cpp index ecc73b35..13bc9751 100644 --- a/src/evaluate.cpp +++ b/src/evaluate.cpp @@ -353,8 +353,13 @@ Value do_evaluate(const Position& pos, EvalInfo& ei, int threadID) { // Initialize pawn attack bitboards for both sides ei.attackedBy[WHITE][PAWN] = ((pos.pawns(WHITE) << 9) & ~FileABB) | ((pos.pawns(WHITE) << 7) & ~FileHBB); ei.attackedBy[BLACK][PAWN] = ((pos.pawns(BLACK) >> 7) & ~FileABB) | ((pos.pawns(BLACK) >> 9) & ~FileHBB); - ei.kingAttackersCount[WHITE] = count_1s_max_15(ei.attackedBy[WHITE][PAWN] & ei.attackedBy[BLACK][KING])/2; - ei.kingAttackersCount[BLACK] = count_1s_max_15(ei.attackedBy[BLACK][PAWN] & ei.attackedBy[WHITE][KING])/2; + Bitboard b1 = ei.attackedBy[WHITE][PAWN] & ei.attackedBy[BLACK][KING]; + Bitboard b2 = ei.attackedBy[BLACK][PAWN] & ei.attackedBy[WHITE][KING]; + if (b1) + ei.kingAttackersCount[WHITE] = count_1s_max_15(b1)/2; + + if (b2) + ei.kingAttackersCount[BLACK] = count_1s_max_15(b2)/2; // Evaluate pieces for (Color c = WHITE; c <= BLACK; c++) -- 2.39.2