void search_update_current() { my_timer_t *timer = SearchCurrent->timer; S64 node_nb = SearchCurrent->node_nb; const double time = (UseCpuTime) ? my_timer_elapsed_cpu(timer) : my_timer_elapsed_real(timer), speed = (time >= 1.0) ? double(node_nb) / time : 0.0, cpu = my_timer_cpu_usage(timer); SearchCurrent->time = time; SearchCurrent->speed = speed; SearchCurrent->cpu = cpu; }
double my_timer_cpu_usage(const my_timer_t * timer) { double real, cpu; double usage; ASSERT(timer!=NULL); real = my_timer_elapsed_real(timer); cpu = my_timer_elapsed_cpu(timer); if (real <= 0.0 || cpu <= 0.0) return 0.0; usage = cpu / real; if (usage >= 1.0) usage = 1.0; return usage; }
void search_perft(const board_t * board, int depth_max) { int depth; my_timer_t timer[1]; double time, speed; ASSERT(board_is_ok(board)); ASSERT(depth_max>=1&&depth_max<DepthMax); // init board_disp(board); // iterative deepening for (depth = 1; depth <= depth_max; depth++) { // init NodeNb = 0; LeafNb = 0; my_timer_reset(timer); my_timer_start(timer); perft(board,depth); my_timer_stop(timer); time = my_timer_elapsed_cpu(timer); speed = (time < 0.01) ? 0.0 : double(NodeNb) / time; printf("%2d %10lld %10lld %7.2f %7.0f\n",depth,NodeNb,LeafNb,time,speed); } printf("\n"); }