A class representing a stopwatch. More...
#include <stop-watch.hh>
Classes | |
struct | PerformanceData |
Public Member Functions | |
long double | get_average_time (std::string perf_name) |
long double | get_last_time (std::string perf_name) |
long double | get_max_time (std::string perf_name) |
long double | get_min_time (std::string perf_name) |
long double | get_time_so_far (std::string perf_name) |
long double | get_total_time (std::string perf_name) |
void | pause (std::string perf_name) |
bool | performance_exists (std::string perf_name) |
void | report (std::string perf_name, int precision=2, std::ostream &output=std::cout) |
void | report_all (int precision=2, std::ostream &output=std::cout) |
void | reset (std::string perf_name) |
void | reset_all () |
void | set_mode (StopwatchMode mode) |
void | start (std::string perf_name) |
void | stop (std::string perf_name) |
Stopwatch (StopwatchMode _mode=NONE) | |
long double | take_time () |
void | turn_off () |
void | turn_on () |
~Stopwatch () | |
Protected Attributes | |
bool | active |
StopwatchMode | mode |
std::map< std::string, PerformanceData > * | records_of |
A class representing a stopwatch.
The Stopwatch class can be used to measure execution time of code, algorithms, etc., // TODO: he Stopwatch can be initialized in two time-taking modes, CPU time and real time:
CPU time is the time spent by the processor on a certain piece of code, while real time is the real amount of time taken by a certain piece of code to execute (i.e. in general if you are doing hard work such as image or video editing on a different process the measured time will probably increase).
How does it work? Basically, one wraps the code to be measured with the following method calls:
A string representing the code ID is provided so that nested portions of code can be profiled separately:
Note: ID strings can be whatever you like, in the previous example I have used "My astounding algorithm - *" only to enforce the fact that the measured code portions are part of My astounding algorithm, but there's no connection between the three measurements.
If the code for a certain task is scattered through different files or portions of the same file one can use the start-pause-stop method:
Finally, to report the results of the measurements just run:
Thou can also provide an additional std::ostream& parameter to report() to redirect the logging on a different output. Also, you can use the get_total/min/max/average_time() methods to get the individual numeric data, without all the details of the logging. You can also extend Stopwatch to implement your own logging syntax.
To report all the measurements:
Same as above, you can redirect the output by providing a std::ostream& parameter.
Definition at line 147 of file stop-watch.hh.
Stopwatch::Stopwatch | ( | StopwatchMode | _mode = NONE | ) |
Constructor
Definition at line 51 of file stop-watch.cpp.
Stopwatch::~Stopwatch | ( | ) |
Destructor
Definition at line 55 of file stop-watch.cpp.
long double Stopwatch::get_average_time | ( | std::string | perf_name | ) |
Returns average execution time of a certain performance
Definition at line 275 of file stop-watch.cpp.
long double Stopwatch::get_last_time | ( | std::string | perf_name | ) |
Return last measurement of a certain performance
Definition at line 305 of file stop-watch.cpp.
long double Stopwatch::get_max_time | ( | std::string | perf_name | ) |
Returns maximum execution time of a certain performance
Definition at line 295 of file stop-watch.cpp.
long double Stopwatch::get_min_time | ( | std::string | perf_name | ) |
Returns minimum execution time of a certain performance
Definition at line 285 of file stop-watch.cpp.
long double Stopwatch::get_time_so_far | ( | std::string | perf_name | ) |
Return the time since the start of the last measurement of a given performance.
Definition at line 252 of file stop-watch.cpp.
long double Stopwatch::get_total_time | ( | std::string | perf_name | ) |
Returns total execution time of a certain performance
Definition at line 265 of file stop-watch.cpp.
void Stopwatch::pause | ( | std::string | perf_name | ) |
Stops the stopwatch related to a certain piece of code
Definition at line 154 of file stop-watch.cpp.
bool Stopwatch::performance_exists | ( | std::string | perf_name | ) |
Tells if a performance with a certain ID exists
Definition at line 59 of file stop-watch.cpp.
void Stopwatch::report | ( | std::string | perf_name, |
int | precision = 2 , |
||
std::ostream & | output = std::cout |
||
) |
Dump the data of a certain performance record
Definition at line 224 of file stop-watch.cpp.
void Stopwatch::report_all | ( | int | precision = 2 , |
std::ostream & | output = std::cout |
||
) |
Dump the data of all the performance records
Definition at line 185 of file stop-watch.cpp.
void Stopwatch::reset | ( | std::string | perf_name | ) |
Reset a certain performance record
Definition at line 196 of file stop-watch.cpp.
void Stopwatch::reset_all | ( | ) |
Resets all the performance records
Definition at line 175 of file stop-watch.cpp.
void Stopwatch::set_mode | ( | StopwatchMode | mode | ) |
Initialize stopwatch to use a certain time taking mode
Definition at line 57 of file stop-watch.cpp.
void Stopwatch::start | ( | std::string | perf_name | ) |
Start the stopwatch related to a certain piece of code
Definition at line 105 of file stop-watch.cpp.
void Stopwatch::stop | ( | std::string | perf_name | ) |
Stops the stopwatch related to a certain piece of code
Definition at line 123 of file stop-watch.cpp.
long double Stopwatch::take_time | ( | ) |
Take time, depends on mode
Definition at line 63 of file stop-watch.cpp.
void Stopwatch::turn_off | ( | ) |
Turn off clock, all the Stopwatch::* methods return without doing anything after this method is called.
Definition at line 219 of file stop-watch.cpp.
void Stopwatch::turn_on | ( | ) |
Turn on clock, restore clock operativity after a turn_off().
Definition at line 214 of file stop-watch.cpp.
|
protected |
Flag to hold the clock's status
Definition at line 247 of file stop-watch.hh.
|
protected |
Time taking mode
Definition at line 250 of file stop-watch.hh.
|
protected |
Pointer to the dynamic structure which holds the collection of performance data
Definition at line 254 of file stop-watch.hh.