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