int current_search_time();
std::string value_to_uci(Value v);
- int nps(const Position& pos);
+ std::string speed_to_uci(int64_t nodes);
void poll(const Position& pos);
void wait_for_stop_or_ponderhit();
Move bestMove = id_loop(pos, searchMoves, &ponderMove);
// Print final search statistics
- cout << "info nodes " << pos.nodes_searched()
- << " nps " << nps(pos)
- << " time " << current_search_time() << endl;
+ cout << "info" << speed_to_uci(pos.nodes_searched()) << endl;
if (UseLogFile)
{
+ int t = current_search_time();
+
LogFile << "Nodes: " << pos.nodes_searched()
- << "\nNodes/second: " << nps(pos)
+ << "\nNodes/second: " << (t > 0 ? int(pos.nodes_searched() * 1000 / t) : 0)
<< "\nBest move: " << move_to_san(pos, bestMove);
StateInfo st;
if (SendSearchedNodes)
{
SendSearchedNodes = false;
- cout << "info nodes " << nodes
- << " nps " << nps(pos)
- << " time " << current_search_time() << endl;
+ cout << "info" << speed_to_uci(pos.nodes_searched()) << endl;
}
if (current_search_time() >= 1000)
H.update_gain(pos.piece_on(move_to(m)), move_to(m), -(before + after));
}
+ // current_search_time() returns the number of milliseconds which have passed
+ // since the beginning of the current search.
+
+ int current_search_time() {
+
+ return get_system_time() - SearchStartTime;
+ }
+
// value_to_uci() converts a value to a string suitable for use with the UCI
// protocol specifications:
}
- // current_search_time() returns the number of milliseconds which have passed
- // since the beginning of the current search.
-
- int current_search_time() {
-
- return get_system_time() - SearchStartTime;
- }
+ // speed_to_uci() returns a string with time stats of current search suitable
+ // to be sent to UCI gui.
+ std::string speed_to_uci(int64_t nodes) {
- // nps() computes the current nodes/second count
+ std::stringstream s;
+ int t = current_search_time();
- int nps(const Position& pos) {
+ s << " nodes " << nodes
+ << " nps " << (t > 0 ? int(nodes * 1000 / t) : 0)
+ << " time " << t;
- int t = current_search_time();
- return (t > 0 ? int((pos.nodes_searched() * 1000) / t) : 0);
+ return s.str();
}
<< " multipv " << pvLine + 1
<< " score " << value_to_uci(pv_score)
<< (pv_score >= beta ? " lowerbound" : pv_score <= alpha ? " upperbound" : "")
- << " time " << current_search_time()
- << " nodes " << pos.nodes_searched()
- << " nps " << nps(pos)
+ << speed_to_uci(pos.nodes_searched())
<< " pv " << l.str();
return s.str();