Files

20 lines
703 B
C++

#pragma once
#include <chrono>
// Utility Timer
template <typename Clock = std::chrono::high_resolution_clock> class Stopwatch {
typename Clock::time_point start_point;
public:
Stopwatch() : start_point(Clock::now()) {}
// Returns elapsed time
template <typename Rep = typename Clock::duration::rep, typename Units = typename Clock::duration> Rep elapsedTime() const {
std::atomic_thread_fence(std::memory_order_relaxed);
auto counted_time = std::chrono::duration_cast<Units>(Clock::now() - start_point).count();
std::atomic_thread_fence(std::memory_order_relaxed);
return static_cast<Rep>(counted_time);
}
};
using preciseStopwatch = Stopwatch<>;