#include <stopwatch.h>
template<typename Clock = std::chrono::steady_clock>
werkzeugkiste::timing::StopWatch_ class

A stop watch with configurable clock.

A stop watch measures the time since you last called Start(), or since its construction. Use its ElapsedXXX() methods to get the elapsed time in the corresponding time interval (i.e. precision), e.g. ElapsedSeconds().

Duration measurements should use a monotonic clock. Thus, we explicitly default to steady_clock (since high_resolution_clock is not guaranteed to be steady).

Public types

using clock_type = Clock
Clock type used by this stop watch.

Constructors, destructors, conversion operators

StopWatch_()
Constructor starts the stop watch.
StopWatch_(const StopWatch_& other)
Copy-constructor copies the other's start time point.
~StopWatch_() defaulted
StopWatch_(StopWatch_&& other) defaulted noexcept

Public functions

auto operator=(const StopWatch_& other) -> StopWatch_& defaulted
auto operator=(StopWatch_&& other) -> StopWatch_& defaulted noexcept
void Start()
Starts or restarts the stop watch.
template<typename Ratio>
auto ElapsedAs() const -> double
Returns the elapsed time as ticks of the given time interval.
auto ElapsedSeconds() const -> double
Returns the elapsed time in seconds.
auto ElapsedMilliseconds() const -> double
Returns the elapsed time in milliseconds.
auto ElapsedMicroseconds() const -> double
Returns the elapsed time in microseconds.
auto ElapsedNanoseconds() const -> double
Returns the elapsed time in nanoseconds.
auto YearsUntilOverflow() const -> double
Returns the number of years before this stop watch will overflow.
auto IsSteady() const -> bool
Returns true if the used clock is steady (monotonic).
auto ClockName() const -> std::string
Returns a readable clock typeid, for example "std::chrono::steady_clock".

Function documentation

template<typename Clock> template<typename Ratio>
double werkzeugkiste::timing::StopWatch_<Clock>::ElapsedAs() const

Returns the elapsed time as ticks of the given time interval.

The time interval is a rational fraction, i.e. std::ratio, which represents the time in seconds from one tick to the next, i.e. similar to the Period template parameter in std::chrono::duration.