17#ifndef DAF_TIME_HPP_INCLUDED
18#define DAF_TIME_HPP_INCLUDED
20#include "../DafUtils.hpp"
39uint32_t d_gettime_ms() noexcept
41 #if defined(DAF_OS_MAC)
42 static const time_t s = clock_gettime_nsec_np(CLOCK_UPTIME_RAW) / 1000000;
43 return (clock_gettime_nsec_np(CLOCK_UPTIME_RAW) / 1000000) - s;
44 #elif defined(DAF_OS_WINDOWS)
45 return static_cast<uint32_t
>(timeGetTime());
51 } s = { {}, clock_gettime(CLOCK_MONOTONIC, &s.ts),
static_cast<uint32_t
>(s.ts.tv_sec * 1000 +
52 s.ts.tv_nsec / 1000000) };
54 clock_gettime(CLOCK_MONOTONIC, &ts);
55 return (ts.tv_sec * 1000 + ts.tv_nsec / 1000000) - s.ms;
63uint64_t d_gettime_us() noexcept
65 #if defined(DAF_OS_MAC)
66 static const uint64_t s = clock_gettime_nsec_np(CLOCK_UPTIME_RAW) / 1000;
67 return (clock_gettime_nsec_np(CLOCK_UPTIME_RAW) / 1000) - s;
68 #elif defined(DAF_OS_WINDOWS)
71 LARGE_INTEGER counter;
73 } s = { {}, {}, QueryPerformanceFrequency(&s.freq), QueryPerformanceCounter(&s.counter) };
75 LARGE_INTEGER counter;
76 QueryPerformanceCounter(&counter);
77 return (counter.QuadPart - s.counter.QuadPart) * 1000000 / s.freq.QuadPart;
83 } s = { {}, clock_gettime(CLOCK_MONOTONIC, &s.ts),
static_cast<uint64_t
>(s.ts.tv_sec * 1000000 +
84 s.ts.tv_nsec / 1000) };
86 clock_gettime(CLOCK_MONOTONIC, &ts);
87 return (ts.tv_sec * 1000000 + ts.tv_nsec / 1000) - s.us;
95uint64_t d_gettime_ns() noexcept
97 #if defined(DAF_OS_MAC)
98 static const uint64_t s = clock_gettime_nsec_np(CLOCK_UPTIME_RAW);
99 return clock_gettime_nsec_np(CLOCK_UPTIME_RAW) - s;
100 #elif defined(DAF_OS_WINDOWS)
103 LARGE_INTEGER counter;
105 } s = { {}, {}, QueryPerformanceFrequency(&s.freq), QueryPerformanceCounter(&s.counter) };
107 LARGE_INTEGER counter;
108 QueryPerformanceCounter(&counter);
109 return (counter.QuadPart - s.counter.QuadPart) * 1000000000ULL / s.freq.QuadPart;
115 } s = { {}, clock_gettime(CLOCK_MONOTONIC, &s.ts),
static_cast<uint64_t
>(s.ts.tv_sec * 1000000000ULL +
118 clock_gettime(CLOCK_MONOTONIC, &ts);
119 return (ts.tv_sec * 1000000000ULL + ts.tv_nsec) - s.ns;
#define END_NAMESPACE_DAF
Definition DafInfo.hpp:996
#define START_NAMESPACE_DAF
Definition DafInfo.hpp:990