/* * timer.cpp * * Created on: Jul 18, 2009 * Author: gregor */ #include "GLTB/timer.h" #ifndef WIN32 // Linux implementation #include namespace gltb { void Timer::start() { gettimeofday(&startTime, 0); } long long Timer::stop() { struct timeval tv; gettimeofday(&tv, 0); long long endTime = tv.tv_sec * 1000 + tv.tv_usec / 1000; long long startTimeMS = startTime.tv_sec * 1000 + startTime.tv_usec / 1000; return endTime - startTimeMS; } double Timer::stopHighRes() { struct timeval tv; gettimeofday(&tv, 0); double endTime = tv.tv_sec * 1000 + tv.tv_usec / 1000.0; double startTimeMS = startTime.tv_sec * 1000 + startTime.tv_usec / 1000.0; return endTime - startTimeMS; } } #else // Win32 implementation #include "windows.h" namespace gltb { void Timer::start() { LARGE_INTEGER temp; QueryPerformanceCounter(&temp); startTime=temp.QuadPart; } long long Timer::stop() { LARGE_INTEGER temp; QueryPerformanceCounter(&temp); long long endTime=temp.QuadPart; QueryPerformanceFrequency(&temp); return (long long)(1000*((endTime-startTime)/((double)temp.QuadPart))); } double Timer::stopHighRes() { LARGE_INTEGER temp; QueryPerformanceCounter(&temp); long long endTime = temp.QuadPart; QueryPerformanceFrequency(&temp); return 1000.0 * ((endTime - startTime) / (double)temp.QuadPart); } } #endif