MADARA  3.4.1
Timer.h
Go to the documentation of this file.
1 #ifndef _MADARA_UTILITY_TIMER_H_
2 #define _MADARA_UTILITY_TIMER_H_
3 
4 #include <chrono>
5 #include "IntTypes.h"
6 
7 namespace madara
8 {
9 namespace utility
10 {
15 template<typename CLOCK = std::chrono::steady_clock>
16 class Timer
17 {
18 public:
22  inline void start(void)
23  {
24  start_ = CLOCK::now();
25  }
26 
30  inline void stop(void)
31  {
32  end_ = CLOCK::now();
33  }
34 
39  inline uint64_t duration_ns(void) const
40  {
41  auto dur =
42  std::chrono::duration_cast<std::chrono::nanoseconds>(end_ - start_);
43 
44  return (uint64_t)dur.count();
45  }
46 
51  inline uint64_t duration_s(void) const
52  {
53  auto dur = std::chrono::duration_cast<std::chrono::seconds>(end_ - start_);
54 
55  return (uint64_t)dur.count();
56  }
57 
62  inline double duration_ds(void) const
63  {
64  auto dur = std::chrono::duration_cast<std::chrono::duration<double>>(
65  end_ - start_);
66 
67  return (double)dur.count();
68  }
69 
74  template<typename PERIOD = std::chrono::nanoseconds>
75  inline uint64_t duration(void) const
76  {
77  auto dur = std::chrono::duration_cast<PERIOD>(end_ - start_);
78 
79  return (uint64_t)dur.count();
80  }
81 
82 private:
84  std::chrono::time_point<CLOCK> start_;
85 
87  std::chrono::time_point<CLOCK> end_;
88 };
89 
91 }
92 }
93 
94 #endif // _MADARA_UTILITY_TIMER_H_
Manages a timer for duration testing.
Definition: Timer.h:17
uint64_t duration_ns(void) const
Returns a duration in nanoseconds.
Definition: Timer.h:39
void stop(void)
Stops the timer.
Definition: Timer.h:30
uint64_t duration(void) const
Returns a duration in user-specified period.
Definition: Timer.h:75
std::chrono::time_point< CLOCK > end_
the end of the timer duration
Definition: Timer.h:87
uint64_t duration_s(void) const
Returns a duration in seconds.
Definition: Timer.h:51
double duration_ds(void) const
Returns a duration in seconds (double format)
Definition: Timer.h:62
void start(void)
Starts the timer.
Definition: Timer.h:22
std::chrono::time_point< CLOCK > start_
the start of the timer duration
Definition: Timer.h:84
Provides utility functions and classes for common tasks and needs.
Definition: IteratorImpl.h:15
Timer< std::chrono::steady_clock > TimerSteady
Definition: Timer.h:90
Copyright(c) 2020 Galois.