11#include <promeki/config.h>
12#if PROMEKI_ENABLE_CORE
17PROMEKI_NAMESPACE_BEGIN
38 ElapsedTimer() : _valid(true), _start(std::chrono::steady_clock::now()) {}
44 _start = std::chrono::steady_clock::now();
53 auto now = std::chrono::steady_clock::now();
54 int64_t ms = std::chrono::duration_cast<std::chrono::milliseconds>(now - _start).count();
64 int64_t elapsed()
const {
65 return std::chrono::duration_cast<std::chrono::milliseconds>(std::chrono::steady_clock::now() -
74 int64_t elapsedUs()
const {
75 return std::chrono::duration_cast<std::chrono::microseconds>(std::chrono::steady_clock::now() -
84 int64_t elapsedNs()
const {
85 return std::chrono::duration_cast<std::chrono::nanoseconds>(std::chrono::steady_clock::now() -
95 bool hasExpired(int64_t ms)
const {
return elapsed() >= ms; }
101 bool isValid()
const {
return _valid; }
106 void invalidate() { _valid =
false; }
110 std::chrono::steady_clock::time_point _start;