diff options
Diffstat (limited to 'zencore/timer.cpp')
| -rw-r--r-- | zencore/timer.cpp | 19 |
1 files changed, 17 insertions, 2 deletions
diff --git a/zencore/timer.cpp b/zencore/timer.cpp index ee8e1cf9c..08b5e06d2 100644 --- a/zencore/timer.cpp +++ b/zencore/timer.cpp @@ -3,26 +3,41 @@ #include <doctest/doctest.h> #include <zencore/thread.h> #include <zencore/timer.h> -#include <zencore/windows.h> +#if ZEN_PLATFORM_WINDOWS +# include <zencore/windows.h> +#elif ZEN_PLATFORM_LINUX +# include <time.h> +# include <unistd.h> +#endif namespace zen { uint64_t GetHifreqTimerValue() { +#if ZEN_PLATFORM_WINDOWS LARGE_INTEGER li; QueryPerformanceCounter(&li); return li.QuadPart; +#else + struct timespec ts; + clock_gettime(CLOCK_MONOTONIC, &ts); + return (uint64_t(ts.tv_sec) * 1000000ull) + (uint64_t(ts.tv_nsec) / 1000ull); +#endif } uint64_t internalGetHifreqTimerFrequency() { +#if ZEN_PLATFORM_WINDOWS LARGE_INTEGER li; QueryPerformanceFrequency(&li); return li.QuadPart; +#else + return 1000000ull; +#endif } static uint64_t qpcFreq = internalGetHifreqTimerFrequency(); @@ -56,7 +71,7 @@ TEST_CASE("Timer") { uint64_t s0 = GetHifreqTimerValue(); uint64_t t0 = GetCpuTimerValue(); - Sleep(1000); + zen::Sleep(1000); uint64_t s1 = GetHifreqTimerValue(); uint64_t t1 = GetCpuTimerValue(); // double r = double(t1 - t0) / (s1 - s0); |