Reset search time as early as possible
authorMarco Costalba <mcostalba@gmail.com>
Sat, 31 Mar 2012 09:01:31 +0000 (10:01 +0100)
committerMarco Costalba <mcostalba@gmail.com>
Sat, 31 Mar 2012 09:01:31 +0000 (10:01 +0100)
In particualr before to wake up main thread that
could take some random time. Until we don't reset
search time we are not able to correctly track
the elapsed search time and this can be dangerous
under extreme time pressure.

No functional change.

Signed-off-by: Marco Costalba <mcostalba@gmail.com>
src/search.cpp
src/search.h
src/thread.cpp

index 8d0c0c6b27199acc722d72e3188ce7c400a0f0b7..9ebf5c5ca25fbcd811cbe09f0bcf66dd70e8c01a 100644 (file)
@@ -28,7 +28,6 @@
 #include "book.h"
 #include "evaluate.h"
 #include "history.h"
-#include "misc.h"
 #include "movegen.h"
 #include "movepick.h"
 #include "search.h"
@@ -43,6 +42,7 @@ namespace Search {
   LimitsType Limits;
   std::vector<RootMove> RootMoves;
   Position RootPosition;
+  Time SearchTime;
 }
 
 using std::string;
@@ -118,7 +118,6 @@ namespace {
 
   size_t MultiPV, UCIMultiPV, PVIdx;
   TimeManager TimeMgr;
-  Time SearchTime;
   int BestMoveChanges;
   int SkillLevel;
   bool SkillLevelEnabled, Chess960;
@@ -253,7 +252,6 @@ void Search::think() {
   Position& pos = RootPosition;
   Chess960 = pos.is_chess960();
   Eval::RootColor = pos.side_to_move();
-  SearchTime.restart();
   TimeMgr.init(Limits, pos.startpos_ply_counter(), pos.side_to_move());
   TT.new_search();
   H.clear();
index c957c34bf6259b1107ddd860209454ffffed9351..b6f28a73aa945d8091106f7d21a324e0c1d083e3 100644 (file)
@@ -23,6 +23,7 @@
 #include <cstring>
 #include <vector>
 
+#include "misc.h"
 #include "types.h"
 
 class Position;
@@ -94,6 +95,7 @@ extern volatile SignalsType Signals;
 extern LimitsType Limits;
 extern std::vector<RootMove> RootMoves;
 extern Position RootPosition;
+extern Time SearchTime;
 
 extern void init();
 extern int64_t perft(Position& pos, Depth depth);
index 6fefd58a792b9225d7a121bf102e38e18a8850fc..2dcbf91093dc7379d0281ccae235838d9c99f031 100644 (file)
@@ -432,6 +432,8 @@ void ThreadsManager::start_searching(const Position& pos, const LimitsType& limi
                                      const std::set<Move>& searchMoves) {
   wait_for_search_finished();
 
+  SearchTime.restart(); // As early as possible
+
   Signals.stopOnPonderhit = Signals.firstRootMove = false;
   Signals.stop = Signals.failedLowAtRoot = false;