00001 // -*- C++ -*- 00020 #ifndef COIL_TIMEMEASURE_H 00021 #define COIL_TIMEMEASURE_H 00022 00023 #include <vector> 00024 #include <coil/TimeValue.h> 00025 00026 namespace coil 00027 { 00028 00036 class TimeMeasure 00037 { 00038 public: 00039 struct Statistics 00040 { 00041 double max_interval; 00042 double min_interval; 00043 double mean_interval; 00044 double std_deviation; 00045 }; 00051 TimeMeasure(int buflen = 100); 00052 00058 void tick(); 00059 00065 void tack(); 00066 00067 coil::TimeValue& interval(); 00068 00069 void reset(); 00070 00077 unsigned long int count() const; 00078 00084 bool getStatistics(double &max_interval, 00085 double &min_interval, 00086 double &mean_interval, 00087 double &stddev); 00088 00089 Statistics getStatistics(); 00090 00091 private: 00092 std::vector<coil::TimeValue> m_record; 00093 coil::TimeValue m_begin; 00094 coil::TimeValue m_interval; 00095 00096 unsigned long int m_count; 00097 const unsigned long int m_countMax; 00098 unsigned long long int m_cpuClock; 00099 00100 bool m_recurred; 00101 }; 00102 }; // namespace coil 00103 #endif // COIL_TIMEMEASURE_H