diff --git a/timer.h b/timer.h new file mode 100644 index 0000000000000000000000000000000000000000..6f4fb4a4e58504c429579e55bcd0a5a22524404a --- /dev/null +++ b/timer.h @@ -0,0 +1,54 @@ +#ifndef TIMER_H +#define TIMER_H + +#include <stdlib.h> + +#ifdef WIN32 + #define WIN32_LEAN_AND_MEAN + #include <windows.h> +#else + #ifndef __USE_BSD + #define __USE_BSD + #endif + #include <sys/time.h> +#endif + +#ifdef WIN32 +double PCFreq = 0.0; +__int64 timerStart = 0; +#else +struct timeval timerStart; +#endif + +void StartTimer() +{ +#ifdef WIN32 + LARGE_INTEGER li; + if(!QueryPerformanceFrequency(&li)) + printf("QueryPerformanceFrequency failed!\n"); + + PCFreq = (double)li.QuadPart/1000.0; + + QueryPerformanceCounter(&li); + timerStart = li.QuadPart; +#else + gettimeofday(&timerStart, NULL); +#endif +} + +// time elapsed in ms +double GetTimer() +{ +#ifdef WIN32 + LARGE_INTEGER li; + QueryPerformanceCounter(&li); + return (double)(li.QuadPart-timerStart)/PCFreq; +#else + struct timeval timerStop, timerElapsed; + gettimeofday(&timerStop, NULL); + timersub(&timerStop, &timerStart, &timerElapsed); + return timerElapsed.tv_sec*1000.0+timerElapsed.tv_usec/1000.0; +#endif +} + +#endif // TIMER_H