31 using namespace std::chrono;
36 high_resolution_clock::time_point realTimeMark;
37 duration<double> realTimeElapsed;
39 clock_t processorTimeMark;
40 double processorTimeElapsed;
42 inline Timer() : processorTimeElapsed(0), realTimeElapsed(0) {};
43 inline void start() {processorTimeMark = clock(); realTimeMark = high_resolution_clock::now();}
44 inline void stop() {processorTimeElapsed += (double)(clock() - processorTimeMark); realTimeElapsed += duration_cast<duration<double>>(high_resolution_clock::now() - realTimeMark);}
45 inline const double realTime()
const{
return realTimeElapsed.count();}
46 inline const double processorTime()
const{
return (
double)processorTimeElapsed/CLOCKS_PER_SEC;}
47 inline const double processorLoad()
const{
return processorTime()/realTime();}
48 inline void reset() {processorTimeElapsed = 0; realTimeElapsed = duration<double>(0);}
50 inline const double estimatedDuration(
double completeness) {
return realTimeElapsed.count()/completeness;}
52 inline const double estimatedRemainder(
double completeness) {
return (1. - completeness) * estimatedDuration(completeness);}
56 inline void sleep(
unsigned int span)
58 std::this_thread::sleep_for(std::chrono::milliseconds(span));
const double estimatedRemainder(double completeness)
Returns estimated time till finishing current task based on its current completeness [0....
const double realTime() const
Advanced Simulation Library.
const double processorTime() const
void sleep(unsigned int span)
Blocks execution of the calling thread for the time span (in milliseconds)
const double estimatedDuration(double completeness)
Returns estimated duration of the current task based on its current completeness [0....
const double processorLoad() const