#ifndef SIGNALSMITH_STOPWATCH_UTIL_H #define SIGNALSMITH_STOPWATCH_UTIL_H #include #include #include #include #ifdef WINDOWS // completely untested! # include namespace signalsmith { class Stopwatch { using Time = __int64; using Duration = Time; inline Time now() { LARGE_INTEGER result; QueryPerformanceCounter(&result); return result.QuadPart; } static double toSeconds(Duration t) { LARGE_INTEGER freq; QueryPerformanceFrequency(&freq); return t/double(freq); } #else # include namespace signalsmith { class Stopwatch { using Clock = std::conditional::type; using Time = Clock::time_point; using Duration = std::chrono::duration; inline Time now() { return Clock::now(); } static double toSeconds(Duration duration) { return duration.count(); } #endif std::atomic