Cogs.Core
Timer.Windows.cpp
1#include "Timer.h"
2
3#define WIN32_LEAN_AND_MEAN
4#include <Windows.h>
5
6namespace{
7 struct PerfFreq
8 {
9 PerfFreq()
10 {
11 QueryPerformanceFrequency(&frequency);
12 }
13
14 LARGE_INTEGER frequency;
15 };
16 PerfFreq perfFreq;
17};
18
19Cogs::TimePerf Cogs::perfTime()
20{
21 LARGE_INTEGER t;
22 QueryPerformanceCounter(&t);
23 return t.QuadPart;
24}
25
26Cogs::Time Cogs::currentTime()
27{
28 LARGE_INTEGER time;
29 GetSystemTimeAsFileTime(reinterpret_cast<FILETIME*>(&time));
30 return time.QuadPart - 116444736000000000LL;
31}
32
33int64_t Cogs::perfTimeToMicroseconds(TimePerf time)
34{
35 return (time * 1000000) / perfFreq.frequency.QuadPart;
36}
37int64_t Cogs::perfTimeToMilliseconds(TimePerf time)
38{
39 return (time * 1000) / perfFreq.frequency.QuadPart;
40}
41double Cogs::perfTimeToSeconds(TimePerf time)
42{
43 return time * (1.0 / perfFreq.frequency.QuadPart);
44}
45
46int64_t Cogs::currentTimeToMicroseconds(Time time)
47{
48 return time / 10;
49}
50int64_t Cogs::currentTimeToMilliseconds(Time time)
51{
52 return time / 10000;
53}
54double Cogs::currentTimeToSeconds(Time time)
55{
56 return time / 10000000.0;
57}
COGSFOUNDATION_API int64_t perfTimeToMicroseconds(TimePerf time)
Convertion functions for timestamps.
COGSFOUNDATION_API TimePerf perfTime()
High resolution performance timer. Returns an implementation defined absolute timestamp,...
COGSFOUNDATION_API Time currentTime()
High resolution clock time (NTP / UTC time). Returns an implementation defined absolute timestamp,...