X-Git-Url: https://git.sesse.net/?p=stockfish;a=blobdiff_plain;f=src%2Fsearch.cpp;h=ff2e39a4e1d50f22e756d620a66a39fbc76ed90f;hp=7d982c7f45bc1232eb850af7d1b3527195ae22a0;hb=5d1b92e8f9836e1d403bcf60653dcf6b059c8720;hpb=6661a3154152ab448b1dc11d882586976f616f92 diff --git a/src/search.cpp b/src/search.cpp index 7d982c7f..ff2e39a4 100644 --- a/src/search.cpp +++ b/src/search.cpp @@ -41,7 +41,6 @@ namespace Search { LimitsType Limits; RootMoveVector RootMoves; Position RootPos; - TimePoint SearchTime; StateStackPtr SetupStates; } @@ -219,7 +218,7 @@ template uint64_t Search::perft(Position& pos, Depth depth); void Search::think() { - TimeMgr.init(Limits, RootPos.side_to_move(), RootPos.game_ply()); + TimeMgr.init(Limits, RootPos.side_to_move(), RootPos.game_ply(), now()); int contempt = Options["Contempt"] * PawnValueEg / 100; // From centipawns DrawValue[ RootPos.side_to_move()] = VALUE_DRAW - Value(contempt); @@ -402,7 +401,7 @@ namespace { // the UI) before a re-search. if ( multiPV == 1 && (bestValue <= alpha || bestValue >= beta) - && now() - SearchTime > 3000) + && TimeMgr.elapsed_time() > 3000) sync_cout << UCI::pv(pos, depth, alpha, beta) << sync_endl; // In case of failing low/high increase aspiration window and @@ -433,9 +432,9 @@ namespace { if (Signals.stop) sync_cout << "info nodes " << RootPos.nodes_searched() - << " time " << now() - SearchTime << sync_endl; + << " time " << TimeMgr.elapsed_time() << sync_endl; - else if (PVIdx + 1 == multiPV || now() - SearchTime > 3000) + else if (PVIdx + 1 == multiPV || TimeMgr.elapsed_time() > 3000) sync_cout << UCI::pv(pos, depth, alpha, beta) << sync_endl; } @@ -462,10 +461,10 @@ namespace { // of the available time has been used or we matched an easyMove // from the previous search and just did a fast verification. if ( RootMoves.size() == 1 - || now() - SearchTime > TimeMgr.available_time() + || TimeMgr.elapsed_time() > TimeMgr.available_time() || ( RootMoves[0].pv[0] == easyMove && BestMoveChanges < 0.03 - && now() - SearchTime > TimeMgr.available_time() / 10)) + && TimeMgr.elapsed_time() > TimeMgr.available_time() / 10)) { // If we are allowed to ponder do not stop the search now but // keep pondering until the GUI sends "ponderhit" or "stop". @@ -485,7 +484,7 @@ namespace { // Clear any candidate easy move that wasn't stable for the last search // iterations; the second condition prevents consecutive fast moves. - if (EasyMove.stableCnt < 6 || now() - SearchTime < TimeMgr.available_time()) + if (EasyMove.stableCnt < 6 || TimeMgr.elapsed_time() < TimeMgr.available_time()) EasyMove.clear(); // If skill level is enabled, swap best PV line with the sub-optimal one @@ -833,7 +832,7 @@ moves_loop: // When in check and at SpNode search starts from here { Signals.firstRootMove = (moveCount == 1); - if (thisThread == Threads.main() && now() - SearchTime > 3000) + if (thisThread == Threads.main() && TimeMgr.elapsed_time() > 3000) sync_cout << "info depth " << depth / ONE_PLY << " currmove " << UCI::move(move, pos.is_chess960()) << " currmovenumber " << moveCount + PVIdx << sync_endl; @@ -1482,7 +1481,7 @@ moves_loop: // When in check and at SpNode search starts from here string UCI::pv(const Position& pos, Depth depth, Value alpha, Value beta) { std::stringstream ss; - TimePoint elapsed = now() - SearchTime + 1; + TimePoint elapsed = TimeMgr.elapsed_time() + 1; size_t multiPV = std::min((size_t)Options["MultiPV"], RootMoves.size()); int selDepth = 0; @@ -1726,7 +1725,7 @@ void Thread::idle_loop() { void check_time() { static TimePoint lastInfoTime = now(); - TimePoint elapsed = now() - SearchTime; + TimePoint elapsed = TimeMgr.elapsed_time(); if (now() - lastInfoTime >= 1000) {