MADARA  3.2.3
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 = std::chrono::duration_cast<std::chrono::nanoseconds> (
42  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> (
54  end_ - start_);
55 
56  return (uint64_t) dur.count ();
57  }
58 
63  inline double duration_ds (void) const
64  {
65  auto dur = std::chrono::duration_cast<std::chrono::duration <double>> (
66  end_ - start_);
67 
68  return (double) dur.count ();
69  }
70 
75  template <typename PERIOD=std::chrono::nanoseconds>
76  inline uint64_t duration (void) const
77  {
78  auto dur = std::chrono::duration_cast<PERIOD> (
79  end_ - start_);
80 
81  return (uint64_t) dur.count ();
82  }
83 
84 
85  private:
87  std::chrono::time_point<CLOCK> start_;
88 
90  std::chrono::time_point<CLOCK> end_;
91  };
92  }
93 }
94 
95 #endif // _MADARA_UTILITY_TIMER_H_
void stop(void)
Stops the timer.
Definition: Timer.h:30
uint64_t duration_ns(void) const
Returns a duration in nanoseconds.
Definition: Timer.h:39
uint64_t duration(void) const
Returns a duration in user-specified period.
Definition: Timer.h:76
std::chrono::time_point< CLOCK > start_
the start of the timer duration
Definition: Timer.h:87
uint64_t duration_s(void) const
Returns a duration in seconds.
Definition: Timer.h:51
void start(void)
Starts the timer.
Definition: Timer.h:22
Provides utility functions and classes for common tasks and needs.
Definition: IteratorImpl.h:14
Manages a timer for duration testing.
Definition: Timer.h:16
Copyright (c) 2015 Carnegie Mellon University.
std::chrono::time_point< CLOCK > end_
the end of the timer duration
Definition: Timer.h:90
double duration_ds(void) const
Returns a duration in seconds (double format)
Definition: Timer.h:63