19#elif defined(__MACH__) || defined(__APPLE__)
20#include <mach/clock.h>
33inline double HighResTimer::GetTime()
37 QueryPerformanceCounter((LARGE_INTEGER*)&istart);
38 return ((
double)istart);
39#elif defined(__MACH__) || defined(__APPLE__)
42 host_get_clock_service(mach_host_self(), CALENDAR_CLOCK, &cclock);
43 clock_get_time(cclock, &mts);
44 mach_port_deallocate(mach_task_self(), cclock);
45 return ((
double)mts.tv_sec * 1.0e9 + (
double)mts.tv_nsec);
48 clock_gettime(CLOCK_REALTIME, &tv);
49 return ((
double)tv.tv_sec * 1.0e9 + (
double)tv.tv_nsec);
53inline double HighResTimer::GetFrequency()
57 QueryPerformanceFrequency((LARGE_INTEGER*)&ifreq);
58 return ((
double)ifreq);
66 StartTime = GetTime();
84 ElapsedTime += EndTime - StartTime;
102 ElapsedTime += EndTime - StartTime;
104 startTimer.StartTime = EndTime;
105 startTimer.running = 1;
126 double CurrentTime = GetTime();
127 double retVal = (CurrentTime - StartTime + ElapsedTime) / Frequency;
137double HighResTimer::Frequency = HighResTimer::GetFrequency();
double GetCurrentElapsedTime(bool reset=false)
void StopAndStart(HighResTimer &startTimer)