diff --git a/src/nvcore/Timer.h b/src/nvcore/Timer.h index ebdf3ce..f839c3f 100644 --- a/src/nvcore/Timer.h +++ b/src/nvcore/Timer.h @@ -1,22 +1,60 @@ -// This code is in the public domain -- castano@gmail.com - -#ifndef NV_CORE_TIMER_H -#define NV_CORE_TIMER_H - -#include - -#include //clock - -class NVCORE_CLASS Timer -{ -public: - Timer() {} - - void start() { m_start = clock(); } - int elapsed() const { return (1000 * (clock() - m_start)) / CLOCKS_PER_SEC; } - -private: - clock_t m_start; -}; - -#endif // NV_CORE_TIMER_H +// This code is in the public domain -- castano@gmail.com + +#ifndef NV_CORE_TIMER_H +#define NV_CORE_TIMER_H + +#include + +#if 1 + +#include //clock + +class NVCORE_CLASS Timer +{ +public: + Timer() {} + + void start() { m_start = clock(); } + void stop() { m_stop = clock(); } + + int elapsed() const { return (1000 * (m_stop - m_start)) / CLOCKS_PER_SEC; } + +private: + clock_t m_start; + clock_t m_stop; +}; + +#else + +#define WINDOWS_LEAN_AND_MEAN +#define VC_EXTRALEAN +#define NOMINMAX +#include + +class NVCORE_CLASS Timer +{ +public: + Timer() { + // get the tick frequency from the OS + QueryPerformanceFrequency((LARGE_INTEGER*) &m_frequency); + } + + void start() { QueryPerformanceCounter((LARGE_INTEGER*) &m_start); } + void stop() { QueryPerformanceCounter((LARGE_INTEGER*) &m_stop); } + + int elapsed() const { + return (int)1000 * ((double)m_stop.QuadPart - (double)m_start.QuadPart) / (double)m_frequency.QuadPart; + } + +private: + LARGE_INTEGER m_frequency; + LARGE_INTEGER m_start; + LARGE_INTEGER m_stop; + +}; + +#endif // 0 + + + +#endif // NV_CORE_TIMER_H