diff --git a/src/benchmark.cpp b/src/benchmark.cpp
index cf0a315c..e27e81fe 100644
--- a/src/benchmark.cpp
+++ b/src/benchmark.cpp
@@ -144,7 +144,7 @@ void benchmark(const Position& current, istream& is) {
uint64_t nodes = 0;
Search::StateStackPtr st;
- Time::point elapsed = Time::now();
+ TimePoint elapsed = now();
for (size_t i = 0; i < fens.size(); ++i)
{
@@ -163,7 +163,7 @@ void benchmark(const Position& current, istream& is) {
}
}
- elapsed = Time::now() - elapsed + 1; // Ensure positivity to avoid a 'divide by zero'
+ elapsed = now() - elapsed + 1; // Ensure positivity to avoid a 'divide by zero'
dbg_print(); // Just before to exit
diff --git a/src/misc.cpp b/src/misc.cpp
index daafd3fb..f09694cc 100644
--- a/src/misc.cpp
+++ b/src/misc.cpp
@@ -17,7 +17,6 @@
along with this program. If not, see .
*/
-#include
#include
#include
#include
@@ -27,7 +26,6 @@
#include "thread.h"
using namespace std;
-using namespace std::chrono;
namespace {
@@ -125,13 +123,6 @@ const string engine_info(bool to_uci) {
}
-/// Convert system time to milliseconds. That's all we need.
-
-Time::point Time::now() {
- return duration_cast(steady_clock::now().time_since_epoch()).count();
-}
-
-
/// Debug functions used mainly to collect run-time statistics
void dbg_hit_on(bool b) { ++hits[0]; if (b) ++hits[1]; }
diff --git a/src/misc.h b/src/misc.h
index 28bf0452..37f1e706 100644
--- a/src/misc.h
+++ b/src/misc.h
@@ -21,6 +21,7 @@
#define MISC_H_INCLUDED
#include
+#include
#include
#include
#include
@@ -36,13 +37,13 @@ void dbg_hit_on(bool c, bool b);
void dbg_mean_of(int v);
void dbg_print();
+typedef std::chrono::milliseconds::rep TimePoint; // A value in milliseconds
-namespace Time {
- typedef int64_t point;
- point now();
+inline TimePoint now() {
+ return std::chrono::duration_cast
+ (std::chrono::steady_clock::now().time_since_epoch()).count();
}
-
template
struct HashTable {
Entry* operator[](Key key) { return &table[(uint32_t)key & (Size - 1)]; }
diff --git a/src/search.cpp b/src/search.cpp
index 5dacc877..a6f4d6bd 100644
--- a/src/search.cpp
+++ b/src/search.cpp
@@ -41,7 +41,7 @@ namespace Search {
LimitsType Limits;
RootMoveVector RootMoves;
Position RootPos;
- Time::point SearchTime;
+ TimePoint SearchTime;
StateStackPtr SetupStates;
}
@@ -355,7 +355,7 @@ namespace {
// the UI) before a re-search.
if ( multiPV == 1
&& (bestValue <= alpha || bestValue >= beta)
- && Time::now() - SearchTime > 3000)
+ && now() - SearchTime > 3000)
sync_cout << UCI::pv(pos, depth, alpha, beta) << sync_endl;
// In case of failing low/high increase aspiration window and
@@ -386,9 +386,9 @@ namespace {
if (Signals.stop)
sync_cout << "info nodes " << RootPos.nodes_searched()
- << " time " << Time::now() - SearchTime << sync_endl;
+ << " time " << now() - SearchTime << sync_endl;
- else if (PVIdx + 1 == multiPV || Time::now() - SearchTime > 3000)
+ else if (PVIdx + 1 == multiPV || now() - SearchTime > 3000)
sync_cout << UCI::pv(pos, depth, alpha, beta) << sync_endl;
}
@@ -412,7 +412,7 @@ namespace {
// Stop the search if only one legal move is available or all
// of the available time has been used.
if ( RootMoves.size() == 1
- || Time::now() - SearchTime > TimeMgr.available_time())
+ || now() - SearchTime > TimeMgr.available_time())
{
// If we are allowed to ponder do not stop the search now but
// keep pondering until the GUI sends "ponderhit" or "stop".
@@ -774,7 +774,7 @@ moves_loop: // When in check and at SpNode search starts from here
{
Signals.firstRootMove = (moveCount == 1);
- if (thisThread == Threads.main() && Time::now() - SearchTime > 3000)
+ if (thisThread == Threads.main() && now() - SearchTime > 3000)
sync_cout << "info depth " << depth / ONE_PLY
<< " currmove " << UCI::move(move, pos.is_chess960())
<< " currmovenumber " << moveCount + PVIdx << sync_endl;
@@ -1373,7 +1373,7 @@ moves_loop: // When in check and at SpNode search starts from here
Move Skill::pick_best(size_t multiPV) {
// PRNG sequence should be non-deterministic, so we seed it with the time at init
- static PRNG rng(Time::now());
+ static PRNG rng(now());
// RootMoves are already sorted by score in descending order
int variance = std::min(RootMoves[0].score - RootMoves[multiPV - 1].score, PawnValueMg);
@@ -1407,7 +1407,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;
- Time::point elapsed = Time::now() - SearchTime + 1;
+ TimePoint elapsed = now() - SearchTime + 1;
size_t multiPV = std::min((size_t)Options["MultiPV"], RootMoves.size());
int selDepth = 0;
@@ -1659,12 +1659,12 @@ void Thread::idle_loop() {
void check_time() {
- static Time::point lastInfoTime = Time::now();
- Time::point elapsed = Time::now() - SearchTime;
+ static TimePoint lastInfoTime = now();
+ TimePoint elapsed = now() - SearchTime;
- if (Time::now() - lastInfoTime >= 1000)
+ if (now() - lastInfoTime >= 1000)
{
- lastInfoTime = Time::now();
+ lastInfoTime = now();
dbg_print();
}
diff --git a/src/search.h b/src/search.h
index c7a45208..e233c1c8 100644
--- a/src/search.h
+++ b/src/search.h
@@ -102,7 +102,7 @@ extern volatile SignalsType Signals;
extern LimitsType Limits;
extern RootMoveVector RootMoves;
extern Position RootPos;
-extern Time::point SearchTime;
+extern TimePoint SearchTime;
extern StateStackPtr SetupStates;
void init();
diff --git a/src/thread.cpp b/src/thread.cpp
index 1217e3ab..ba5d13d5 100644
--- a/src/thread.cpp
+++ b/src/thread.cpp
@@ -353,7 +353,7 @@ void ThreadPool::start_thinking(const Position& pos, const LimitsType& limits,
StateStackPtr& states) {
wait_for_think_finished();
- SearchTime = Time::now(); // As early as possible
+ SearchTime = now(); // As early as possible
Signals.stopOnPonderhit = Signals.firstRootMove = false;
Signals.stop = Signals.failedLowAtRoot = false;