template project, first version
This commit is contained in:
65
Simulations/util/timer.h
Normal file
65
Simulations/util/timer.h
Normal file
@@ -0,0 +1,65 @@
|
||||
#ifndef TIMER_H
|
||||
#define TIMER_H
|
||||
|
||||
|
||||
/*
|
||||
// simple example:
|
||||
|
||||
// global declarations
|
||||
MuTime myTimer;
|
||||
// start timer function
|
||||
myTimer.get();
|
||||
|
||||
// ...do actual work...
|
||||
|
||||
// stop timer function & print
|
||||
std::cout << "Time passed "<< myTimer.update().time <<" milliseconds\n";
|
||||
|
||||
*/
|
||||
|
||||
|
||||
#if defined(WIN32) || defined(_WIN32)
|
||||
# include <windows.h>
|
||||
#else
|
||||
# include <sys/time.h>
|
||||
#endif
|
||||
|
||||
struct MuTime {
|
||||
MuTime() {}
|
||||
MuTime operator-(const MuTime& a) { MuTime b; b.time = time - a.time; return b; };
|
||||
MuTime operator+(const MuTime& a) { MuTime b; b.time = time + a.time; return b; };
|
||||
MuTime operator/(unsigned long a) { MuTime b; b.time = time / a; return b; };
|
||||
MuTime& operator+=(const MuTime& a) { time += a.time; return *this; }
|
||||
MuTime& operator-=(const MuTime& a) { time -= a.time; return *this; }
|
||||
MuTime& operator/=(unsigned long a) { time /= a; return *this; }
|
||||
|
||||
void clear() { time = 0; }
|
||||
void get() {
|
||||
#if defined(WIN32) || defined(_WIN32)
|
||||
LARGE_INTEGER liTimerFrequency;
|
||||
LARGE_INTEGER liLastTime;
|
||||
QueryPerformanceFrequency(&liTimerFrequency);
|
||||
QueryPerformanceCounter(&liLastTime);
|
||||
double timepass = (double)liLastTime.QuadPart;
|
||||
timepass /= (double)liTimerFrequency.QuadPart;
|
||||
time = (timepass * 1000);
|
||||
#else
|
||||
struct timeval tv;
|
||||
struct timezone tz;
|
||||
tz.tz_minuteswest = 0;
|
||||
tz.tz_dsttime = 0;
|
||||
gettimeofday(&tv, &tz);
|
||||
time = (tv.tv_sec * 1000) + (tv.tv_usec / 1000);
|
||||
#endif
|
||||
}
|
||||
|
||||
MuTime update(){
|
||||
MuTime o = *this;
|
||||
get();
|
||||
return *this - o;
|
||||
}
|
||||
|
||||
unsigned long time;
|
||||
};
|
||||
|
||||
#endif
|
||||
Reference in New Issue
Block a user