1 #pragma once
2 
3 #define WIN32_LEAN_AND_MEAN
4 #include <windows.h>
5 
6 
7 namespace Time
8 {
9 	////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
GetTime()10 	inline __int64 GetTime()
11 	{
12 		LARGE_INTEGER largeInteger;
13 		QueryPerformanceCounter( &largeInteger );
14 		return largeInteger.QuadPart;
15 	}
16 	////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
GetFrequency()17 	inline __int64 GetFrequency()
18 	{
19 		LARGE_INTEGER frequency;
20 		QueryPerformanceFrequency(&frequency);
21 		return frequency.QuadPart;
22 	}
23 	////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
GetTimeMilliSeconds()24 	inline __int64 GetTimeMilliSeconds()
25 	{
26 		LARGE_INTEGER largeInteger;
27 		QueryPerformanceCounter( &largeInteger );
28 		return ( largeInteger.QuadPart * __int64(1000) ) / GetFrequency();
29 	}
30 	////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
GetTimeMicroSeconds()31 	inline __int64 GetTimeMicroSeconds()
32 	{
33 		LARGE_INTEGER largeInteger;
34 		QueryPerformanceCounter( &largeInteger );
35 		return ( largeInteger.QuadPart * __int64(1000000) ) / GetFrequency();
36 	}
37 	////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
SpinSleep(size_t microSeconds)38 	inline void SpinSleep(size_t microSeconds)
39 	{
40 		__int64 time = GetTimeMicroSeconds() + microSeconds;
41 		while(GetTimeMicroSeconds() < time)
42 		{
43 			Sleep(0);
44 		}
45 	}
46 	////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
47 }
48