1 #pragma once 2 3 #ifdef WIN32 4 5 namespace APE 6 { 7 8 /******************************************************************************************************************************* 9 CTimer 10 *******************************************************************************************************************************/ 11 class CTimer 12 { 13 public: CTimer()14 CTimer() 15 { 16 QueryPerformanceFrequency(&m_Frequency); 17 QueryPerformanceCounter(&m_Timer); 18 } 19 Reset()20 void Reset() 21 { 22 QueryPerformanceCounter(&m_Timer); 23 } 24 25 double GetElapsedMS(bool bReset = false) 26 { 27 double dElapsedMS = 0; 28 29 // get now time 30 LARGE_INTEGER Now; 31 QueryPerformanceCounter(&Now); 32 33 // get elapsed units 34 int64 nElapsedUnits = Now.QuadPart - m_Timer.QuadPart; 35 36 // get elapsed milliseconds 37 if (m_Frequency.QuadPart > 0) 38 { 39 dElapsedMS = double(nElapsedUnits) * double(1000) / double(m_Frequency.QuadPart); 40 } 41 42 // reset 43 if (bReset) 44 Reset(); 45 46 return dElapsedMS; 47 } 48 49 private: 50 51 LARGE_INTEGER m_Timer; 52 LARGE_INTEGER m_Frequency; 53 }; 54 55 } 56 57 #endif