00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00026 #ifndef OW32_Timer_h
00027 #define OW32_Timer_h
00028
00029 #include <OW32/OW32Libs.h>
00030
00031 namespace OW32
00032 {
00033
00037 class OW32_LIB_EXPORT CTimer
00038 {
00039 private:
00041 LARGE_INTEGER m_liStart;
00043 LARGE_INTEGER m_liStop;
00044
00048 class OW32_LIB_EXPORT CTimerFrequency
00049 {
00050 private:
00052 LARGE_INTEGER m_liFreq;
00053
00054 public:
00058 CTimerFrequency()
00059 {
00060
00061 if (!QueryPerformanceFrequency(&m_liFreq))
00062 m_liFreq.QuadPart = 1;
00063 }
00064
00070 __int64 GetFrequency() { return m_liFreq.QuadPart; }
00071 };
00072
00074 static CTimerFrequency m_sTimerFreq;
00075
00076 public:
00082 BOOL Start()
00083 {
00084 return QueryPerformanceCounter(&m_liStart);
00085 }
00086
00092 BOOL Stop()
00093 {
00094 return QueryPerformanceCounter(&m_liStop);
00095 }
00096
00102 double Elapsed() const
00103 {
00104 return (double)(m_liStop.QuadPart-m_liStart.QuadPart)/m_sTimerFreq.GetFrequency();
00105 }
00106 };
00107
00108 }
00109
00110 #endif // OW32_Timer_h