#include "Timer.hpp" Timer::Timer() : isStarted_(false) { } bool Timer::isStarted() { return isStarted_; } unsigned long Timer::getTickCount() { #ifdef WIN32 // return number of ms since last reboot return GetTickCount(); #else // return number of ms since 1970/1/1 struct timeval cTime; gettimeofday(&cTime, 0); return (cTime.tv_sec * 1000) + (cTime.tv_usec / 1000); #endif } void Timer::initTimer() { isStarted_ = true; #ifdef WIN32 temps = GetTickCount(); QueryPerformanceFrequency(&ticksPerSecond); QueryPerformanceCounter(&tick1); #else gettimeofday(&sTime, 0); #endif } unsigned long Timer::getMilliSec() { if (! isStarted_) return 0; #ifdef WIN32 return GetTickCount() - temps; #else struct timeval cTime; gettimeofday(&cTime, 0); return ((cTime.tv_sec - sTime.tv_sec) * 1000) + ((cTime.tv_usec - sTime.tv_usec) / 1000); #endif } unsigned long Timer::getMicroSec() { if (! isStarted_) return 0; #ifdef WIN32 QueryPerformanceCounter(&tick2); return ((tick2.QuadPart - tick1.QuadPart) * 1000000) / ticksPerSecond.QuadPart; #else struct timeval cTime; gettimeofday(&cTime, 0); return ((cTime.tv_sec - sTime.tv_sec) * 1000000) + ((cTime.tv_usec - sTime.tv_usec)); #endif }