19#elif defined(__MACH__) || defined(__APPLE__)
20#include <mach/clock.h>
26inline double HighResTimer::GetTime()
30 QueryPerformanceCounter((LARGE_INTEGER*)&istart);
31 return ((
double)istart);
32#elif defined(__MACH__) || defined(__APPLE__)
35 host_get_clock_service(mach_host_self(), CALENDAR_CLOCK, &cclock);
36 clock_get_time(cclock, &mts);
37 mach_port_deallocate(mach_task_self(), cclock);
38 return ((
double)mts.tv_sec * 1.0e9 + (
double)mts.tv_nsec);
41 clock_gettime(CLOCK_REALTIME, &tv);
42 return ((
double)tv.tv_sec * 1.0e9 + (
double)tv.tv_nsec);
46inline double HighResTimer::GetFrequency()
50 QueryPerformanceFrequency((LARGE_INTEGER*)&ifreq);
51 return ((
double)ifreq);
59 StartTime = GetTime();
77 ElapsedTime += EndTime - StartTime;
95 ElapsedTime += EndTime - StartTime;
97 startTimer.StartTime = EndTime;
98 startTimer.running = 1;
119 double CurrentTime = GetTime();
120 double retVal = (CurrentTime - StartTime + ElapsedTime) / Frequency;
130double HighResTimer::Frequency = HighResTimer::GetFrequency();
double GetCurrentElapsedTime(bool reset=false)
void StopAndStart(HighResTimer &startTimer)