libpromeki main
PROfessional MEdia toolKIt
 
Loading...
Searching...
No Matches
elapsedtimer.h
Go to the documentation of this file.
1
8#pragma once
9
10#include <chrono>
11#include <cstdint>
13
15
24 public:
28 ElapsedTimer() : _valid(true), _start(std::chrono::steady_clock::now()) {}
29
33 void start() {
34 _start = std::chrono::steady_clock::now();
35 _valid = true;
36 }
37
43 auto now = std::chrono::steady_clock::now();
44 int64_t ms = std::chrono::duration_cast<std::chrono::milliseconds>(now - _start).count();
45 _start = now;
46 _valid = true;
47 return ms;
48 }
49
54 int64_t elapsed() const {
55 return std::chrono::duration_cast<std::chrono::milliseconds>(
56 std::chrono::steady_clock::now() - _start
57 ).count();
58 }
59
65 return std::chrono::duration_cast<std::chrono::microseconds>(
66 std::chrono::steady_clock::now() - _start
67 ).count();
68 }
69
75 return std::chrono::duration_cast<std::chrono::nanoseconds>(
76 std::chrono::steady_clock::now() - _start
77 ).count();
78 }
79
85 bool hasExpired(int64_t ms) const {
86 return elapsed() >= ms;
87 }
88
93 bool isValid() const { return _valid; }
94
98 void invalidate() { _valid = false; }
99
100 private:
101 bool _valid;
102 std::chrono::steady_clock::time_point _start;
103};
104
Monotonic elapsed-time measurement using std::chrono::steady_clock.
Definition elapsedtimer.h:23
bool isValid() const
Returns true if the timer has been started and not invalidated.
Definition elapsedtimer.h:93
void start()
Records the current time as the start point.
Definition elapsedtimer.h:33
int64_t elapsed() const
Returns milliseconds elapsed since start.
Definition elapsedtimer.h:54
void invalidate()
Invalidates the timer, marking it as not running.
Definition elapsedtimer.h:98
int64_t restart()
Restarts the timer and returns the elapsed time since the previous start.
Definition elapsedtimer.h:42
ElapsedTimer()
Constructs and starts the timer.
Definition elapsedtimer.h:28
int64_t elapsedNs() const
Returns nanoseconds elapsed since start.
Definition elapsedtimer.h:74
int64_t elapsedUs() const
Returns microseconds elapsed since start.
Definition elapsedtimer.h:64
bool hasExpired(int64_t ms) const
Returns true if the elapsed time is at least ms milliseconds.
Definition elapsedtimer.h:85
Dynamic array container wrapping std::vector.
Definition list.h:40
size_t count(const T &value) const
Returns the number of occurrences of value.
Definition list.h:629
#define PROMEKI_NAMESPACE_BEGIN
Starts a promeki namespace block.
Definition namespace.h:14
#define PROMEKI_NAMESPACE_END
Ends a promeki namespace block.
Definition namespace.h:19