11template <
typename Resolution = std::chrono::nanoseconds>
12auto get_steady_clock_now() {
13 return std::chrono::duration_cast<Resolution>(
14 std::chrono::steady_clock::now().time_since_epoch());
23template <
typename Resolution = std::chrono::nanoseconds>
24auto get_system_clock_now() {
25 return std::chrono::duration_cast<Resolution>(
26 std::chrono::system_clock::now().time_since_epoch());
40 explicit Timer(
double interval_seconds)
41 : interval_ns_(static_cast<int64_t>(interval_seconds * 1e9)),
42 last_time_(std::chrono::steady_clock::now()) {}
49 const auto now = std::chrono::steady_clock::now();
50 const auto elapsed_ns =
51 std::chrono::duration_cast<std::chrono::nanoseconds>(now - last_time_).count();
52 return elapsed_ns >= interval_ns_;
60 const auto now = std::chrono::steady_clock::now();
61 return std::chrono::duration_cast<std::chrono::duration<double>>(now - last_time_).count();
67 void reset() { last_time_ = std::chrono::steady_clock::now(); }
86 std::chrono::time_point<std::chrono::steady_clock> last_time_;
Timer(double interval_seconds)
Constructor for Timer.
Definition time.hpp:40
double elapsed_seconds() const
Get elapsed time in seconds.
Definition time.hpp:59
void reset()
Reset the timer to current time.
Definition time.hpp:67
bool reset_if_elapsed()
Reset timer if interval has elapsed.
Definition time.hpp:73
bool has_elapsed() const
Check if the specified interval has elapsed.
Definition time.hpp:48