From: protonspring Date: Thu, 16 May 2019 12:13:16 +0000 (-0600) Subject: Score and Select Best Thread in same loop (#2125) X-Git-Url: https://git.sesse.net/?p=stockfish;a=commitdiff_plain;h=272936eaba8d3a40f4d2d6649fb9a06912bd162c;hp=3d076a0c50cae378c463fdd2a65a250eda55edab Score and Select Best Thread in same loop (#2125) This is a non-functional simplification that combines vote counting and thread selecting in the same loop. It is possible that the best thread would be updated more frequently than master, but I'm not sure it matters here. Perhaps "mostVotes" is a better name than "bestVote?" STC (stopped early). LLR: 0.70 (-2.94,2.94) [-3.00,1.00] Total: 10714 W: 2329 L: 2311 D: 6074 http://tests.stockfishchess.org/tests/view/5ccc71470ebc5925cf03d244 No functional change. --- diff --git a/src/search.cpp b/src/search.cpp index fdef1400..f1136e3e 100644 --- a/src/search.cpp +++ b/src/search.cpp @@ -239,19 +239,19 @@ void MainThread::search() { for (Thread* th: Threads) minScore = std::min(minScore, th->rootMoves[0].score); - // Vote according to score and depth + // Vote according to score and depth, and select the best thread + int64_t bestVote = 0; for (Thread* th : Threads) + { votes[th->rootMoves[0].pv[0]] += (th->rootMoves[0].score - minScore + 14) * int(th->completedDepth); - // Select best thread - auto bestVote = votes[this->rootMoves[0].pv[0]]; - for (Thread* th : Threads) if (votes[th->rootMoves[0].pv[0]] > bestVote) { bestVote = votes[th->rootMoves[0].pv[0]]; bestThread = th; } + } } previousScore = bestThread->rootMoves[0].score;