X-Git-Url: https://main.carlh.net/gitweb/?p=dcpomatic.git;a=blobdiff_plain;f=src%2Flib%2Ftimer.cc;h=caef89e0e98e5c413539c0851216acde96f6f797;hp=84329a5d5b058ffa2ed28c80761051fa5f15ce3f;hb=2d4e8c5f69cc694625ad95dcee554499605f823b;hpb=f14a834eaa52f10b444995d177c504cc0a5ae0ee diff --git a/src/lib/timer.cc b/src/lib/timer.cc index 84329a5d5..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,6 +57,7 @@ PeriodTimer::~PeriodTimer () cout << N_("T: ") << _name << N_(": ") << (seconds (stop) - seconds (_start)) << N_("\n"); } + StateTimer::StateTimer (string n, string s) : _name (n) { @@ -57,18 +67,21 @@ StateTimer::StateTimer (string n, string s) _state = s; } + StateTimer::StateTimer (string n) : _name (n) { } + void StateTimer::set (string s) { set_internal (s); } + void StateTimer::set_internal (optional s) { @@ -88,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,7 +123,7 @@ StateTimer::~StateTimer () longest = max (longest, int(i.first.length())); } - list > sorted; + list> sorted; for (auto const& i: _counts) { string name = i.first + string(longest + 1 - i.first.size(), ' '); @@ -123,7 +133,10 @@ StateTimer::~StateTimer () 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 (auto const& i: sorted) {