31using 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;}
48 inline void reset() {processorTimeElapsed = 0; realTimeElapsed = duration<double>(0);}
50 inline const double estimatedDuration(
double completeness) {
return realTimeElapsed.count()/completeness;}
56 inline void sleep(
unsigned int span)
58 std::this_thread::sleep_for(std::chrono::milliseconds(span));
const double realTime() const
const double processorTime() const
const double estimatedDuration(double completeness)
Returns estimated duration of the current task based on its current completeness [0....
const double processorLoad() const
const double estimatedRemainder(double completeness)
Returns estimated time till finishing current task based on its current completeness [0....
Advanced Simulation Library.
void sleep(unsigned int span)
Blocks execution of the calling thread for the time span (in milliseconds)