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;}