32 using Clock = std::chrono::high_resolution_clock;
33 using Units = std::chrono::duration<double>;
40 Timer (
bool startImmediately=
true) noexcept
42 isRunning_ = startImmediately;
49 sumElapsed_ = std::chrono::seconds{0};
50 storedLastElapsed_ = std::chrono::seconds{0};
51 cstart = Clock::now();
60 cstart = Clock::now();
69 return durationCast(rawElapsed());
75 return durationCast(rawLastElapsed());
84 storedLastElapsed_ = rawLastElapsed();
85 sumElapsed_ += storedLastElapsed_;
95 Clock::duration sumElapsed_;
96 Clock::duration storedLastElapsed_;
98 Clock::duration rawElapsed () const noexcept
102 return sumElapsed_ + rawLastElapsed();
108 Clock::duration rawLastElapsed () const noexcept
112 return Clock::now() - cstart;
115 return storedLastElapsed_;
118 double durationCast(Clock::duration duration)
const noexcept {
119 return std::chrono::duration_cast<Units>(duration).count();
122 Clock::time_point cstart;
Dune namespace
Definition alignedallocator.hh:13
void reset() noexcept
Reset timer while keeping the running/stopped state.
Definition timer.hh:47
double stop() noexcept
Stop the timer and return elapsed().
Definition timer.hh:79
Timer(bool startImmediately=true) noexcept
A new timer, create and reset.
Definition timer.hh:40
double elapsed() const noexcept
Get elapsed user-time from last reset until now/last stop in seconds.
Definition timer.hh:67
double lastElapsed() const noexcept
Get elapsed user-time from last start until now/last stop in seconds.
Definition timer.hh:73
void start() noexcept
Start the timer and continue measurement if it is not running. Otherwise do nothing.
Definition timer.hh:56