mirror of
https://github.com/sockspls/badfish
synced 2025-04-30 00:33:09 +00:00
Don't assume the type of Time::point
But instead use the proper definition. Also rewrite chrono functions while there. No functional change.
This commit is contained in:
parent
153fb216a1
commit
0b36ba74fc
6 changed files with 21 additions and 29 deletions
|
@ -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
|
||||
|
||||
|
|
|
@ -17,7 +17,6 @@
|
|||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include <chrono>
|
||||
#include <fstream>
|
||||
#include <iomanip>
|
||||
#include <iostream>
|
||||
|
@ -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<milliseconds>(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]; }
|
||||
|
|
|
@ -21,6 +21,7 @@
|
|||
#define MISC_H_INCLUDED
|
||||
|
||||
#include <cassert>
|
||||
#include <chrono>
|
||||
#include <ostream>
|
||||
#include <string>
|
||||
#include <vector>
|
||||
|
@ -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::milliseconds>
|
||||
(std::chrono::steady_clock::now().time_since_epoch()).count();
|
||||
}
|
||||
|
||||
|
||||
template<class Entry, int Size>
|
||||
struct HashTable {
|
||||
Entry* operator[](Key key) { return &table[(uint32_t)key & (Size - 1)]; }
|
||||
|
|
|
@ -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();
|
||||
}
|
||||
|
||||
|
|
|
@ -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();
|
||||
|
|
|
@ -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;
|
||||
|
|
Loading…
Add table
Reference in a new issue