Add a timer object to hold timestamps during runtime
Motivation
Dealing with std::chrono and its myriad of classes and converting the duration between different units is verbose and error-prone. This object moves all that logic internally so you can focus on collecting timestamps and getting them in the right units and type easily.
Implementation
The Timer maintains a map of labels and timestamps. When you create the object, you can choose to save a value on construction. If you pass true, it saves the current time. If you pass a time, it uses that time. The timer uses two special labels, "start" and "stop", which are set by the start() and stop() methods. You can also save custom timestamps using add(). Using the count() method allows you to specify two labels and get the duration between them. Without any arguments or template parameters, this method will get the duration between the "start" and "stop" labels and return the time in seconds as a double.
The functionality is defined in timer.hpp and implemented in timer.cpp.
Summary of Changes
Motivation
Dealing with
std::chrono
and its myriad of classes and converting the duration between different units is verbose and error-prone. This object moves all that logic internally so you can focus on collecting timestamps and getting them in the right units and type easily.Implementation
The
Timer
maintains a map of labels and timestamps. When you create the object, you can choose to save a value on construction. If you pass true, it saves the current time. If you pass a time, it uses that time. The timer uses two special labels, "start" and "stop", which are set by thestart()
andstop()
methods. You can also save custom timestamps usingadd()
. Using thecount()
method allows you to specify two labels and get the duration between them. Without any arguments or template parameters, this method will get the duration between the "start" and "stop" labels and return the time in seconds as a double.The functionality is defined in
timer.hpp
and implemented intimer.cpp
.