ra4_draw  4bd0201e3d922d42bd545d4b045ed44db33454a4
timer.hpp
Go to the documentation of this file.
1 #ifndef H_TIMER
2 #define H_TIMER
3 
4 #include <chrono>
5 #include <ostream>
6 #include <mutex>
7 #include <string>
8 
9 class Timer{
10 public:
11  using Clock = std::chrono::high_resolution_clock;
12  using TimeType = Clock::time_point;
13 
14  explicit Timer(std::size_t num_iterations = 0,
15  double auto_print = -1.,
16  bool erase_lines = false);
17  Timer(std::size_t num_iterations,
18  std::chrono::duration<double> auto_print,
19  bool erase_lines = false);
20  explicit Timer(const std::string &label,
21  std::size_t num_iterations = 0,
22  double auto_print = -1.,
23  bool erase_lines = false);
24  Timer(const std::string &label,
25  std::size_t num_iterations,
26  std::chrono::duration<double> auto_print,
27  bool erase_lines = false);
28  Timer(const Timer &) = default;
29  Timer & operator=(const Timer &) = default;
30  Timer(Timer &&) = default;
31  Timer & operator=(Timer &&) = default;
32  ~Timer() = default;
33 
34  void Iterate();
35 
36  void Restart();
37  void Restart(std::size_t num_iterations);
38 
39  std::chrono::duration<double> ElapsedTime() const;
40  std::chrono::duration<double> RemainingTime() const;
41 
42  friend std::ostream & operator<<(std::ostream &stream, const Timer &timer);
43 
44  std::size_t Iteration() const;
45  Timer & Iteration(size_t iteration);
46 
47  std::size_t NumIterations() const;
48  Timer & NumIterations(std::size_t num_iterations);
49 
50  std::chrono::duration<double> AutoPrintTime() const;
51  Timer & AutoPrintTime(double auto_print);
52  Timer & AutoPrintTime(std::chrono::duration<double> auto_print);
53 
54  const std::string & Label() const;
55  Timer & Label(const std::string &label);
56 
57 private:
58  std::string label_;
62  std::chrono::duration<double> auto_print_;
64  static std::mutex mutex_;
65 };
66 
67 #endif
~Timer()=default
Definition: timer.hpp:9
std::chrono::duration< double > AutoPrintTime() const
Definition: timer.cpp:165
std::chrono::high_resolution_clock Clock
Definition: timer.hpp:11
TimeType start_time_
Definition: timer.hpp:59
std::size_t iteration_
Definition: timer.hpp:61
std::size_t Iteration() const
Definition: timer.cpp:147
Timer & operator=(const Timer &)=default
std::chrono::duration< double > auto_print_
Definition: timer.hpp:62
std::size_t num_iterations_
Definition: timer.hpp:61
Timer(std::size_t num_iterations=0, double auto_print=-1., bool erase_lines=false)
std::chrono::duration< double > RemainingTime() const
Definition: timer.cpp:106
TimeType last_print_
Definition: timer.hpp:60
const std::string & Label() const
Definition: timer.cpp:179
bool erase_lines_
Definition: timer.hpp:63
void Restart()
Definition: timer.cpp:89
std::chrono::duration< double > ElapsedTime() const
Definition: timer.cpp:102
void Iterate()
Definition: timer.cpp:80
static std::mutex mutex_
Definition: timer.hpp:64
std::size_t NumIterations() const
Definition: timer.cpp:156
Clock::time_point TimeType
Definition: timer.hpp:12
std::string label_
Definition: timer.hpp:58
friend std::ostream & operator<<(std::ostream &stream, const Timer &timer)
Definition: timer.cpp:114