X-Git-Url: https://main.carlh.net/gitweb/?p=dcpomatic.git;a=blobdiff_plain;f=src%2Flib%2Ftimer.cc;h=caef89e0e98e5c413539c0851216acde96f6f797;hp=e4e7bdfdc391a412f4ef0d4c25f5c1ada4e7404c;hb=ac34066d5e448d1984d11a180be74e31b6e13b5c;hpb=697d21c3f9bc6243151372f988936662b9993510 diff --git a/src/lib/timer.cc b/src/lib/timer.cc index e4e7bdfdc..caef89e0e 100644 --- a/src/lib/timer.cc +++ b/src/lib/timer.cc @@ -1,5 +1,5 @@ /* - Copyright (C) 2012-2019 Carl Hetherington + Copyright (C) 2012-2021 Carl Hetherington This file is part of DCP-o-matic. @@ -18,21 +18,29 @@ */ + /** @file src/timer.cc * @brief Some timing classes for debugging and profiling. */ + +#include "compose.hpp" #include "timer.h" #include "util.h" -#include "compose.hpp" -#include #include +#include #include "i18n.h" -using namespace std; + +using std::cout; +using std::list; +using std::max; +using std::pair; +using std::string; using boost::optional; + /** @param n Name to use when giving output */ PeriodTimer::PeriodTimer (string n) : _name (n) @@ -40,6 +48,7 @@ PeriodTimer::PeriodTimer (string n) gettimeofday (&_start, 0); } + /** Destroy PeriodTimer and output the time elapsed since its construction */ PeriodTimer::~PeriodTimer () { @@ -48,9 +57,7 @@ PeriodTimer::~PeriodTimer () cout << N_("T: ") << _name << N_(": ") << (seconds (stop) - seconds (_start)) << N_("\n"); } -/** @param n Name to use when giving output. - * @param s Initial state. - */ + StateTimer::StateTimer (string n, string s) : _name (n) { @@ -60,19 +67,21 @@ StateTimer::StateTimer (string n, string s) _state = s; } + StateTimer::StateTimer (string n) : _name (n) { } + void StateTimer::set (string s) { set_internal (s); } -/** @param s New state that the caller is in */ + void StateTimer::set_internal (optional s) { @@ -92,16 +101,13 @@ StateTimer::set_internal (optional s) _state = s; } + void StateTimer::unset () { set_internal (optional()); } -bool compare (pair a, pair b) -{ - return a.first > b.first; -} /** Destroy StateTimer and generate a summary of the state timings on cout */ StateTimer::~StateTimer () @@ -113,24 +119,27 @@ StateTimer::~StateTimer () unset (); int longest = 0; - for (map::iterator i = _counts.begin(); i != _counts.end(); ++i) { - longest = max (longest, int(i->first.length())); + for (auto const& i: _counts) { + longest = max (longest, int(i.first.length())); } - list > sorted; + list> sorted; - for (map::iterator i = _counts.begin(); i != _counts.end(); ++i) { - string name = i->first + string(longest + 1 - i->first.size(), ' '); + for (auto const& i: _counts) { + string name = i.first + string(longest + 1 - i.first.size(), ' '); char buffer[64]; - snprintf (buffer, 64, "%.4f", i->second.total_time); + snprintf (buffer, 64, "%.4f", i.second.total_time); string total_time (buffer); - sorted.push_back (make_pair(i->second.total_time, String::compose("\t%1%2 %3 %4", name, total_time, i->second.number, (i->second.total_time / i->second.number)))); + sorted.push_back (make_pair(i.second.total_time, String::compose("\t%1%2 %3 %4", name, total_time, i.second.number, (i.second.total_time / i.second.number)))); } - sorted.sort (compare); + sorted.sort ([](pair const& a, pair const& b) { + return a.first > b.first; + }); + cout << _name << N_(":\n"); - for (list >::iterator i = sorted.begin(); i != sorted.end(); ++i) { - cout << N_("\t") << i->second << "\n"; + for (auto const& i: sorted) { + cout << N_("\t") << i.second << "\n"; } }