Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
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
.