#include <BesTimer.h>
Public Member Functions | |
BesTimer (const std::string name) | |
BesTimer (const std::string name) | |
float | elapsed (void) const |
float | elapsed (void) const |
double | mean (void) const |
double | mean (void) const |
double | meanPropVal () |
double | meanPropVal () |
double | meanTimePerObject () |
double | meanTimePerObject () |
std::string & | name () |
std::string & | name () |
int | number_of_measurements (void) const |
int | number_of_measurements (void) const |
bool | operator< (BesTimer &it) |
bool | operator< (BesTimer &it) |
void | pause (void) |
void | pause (void) |
std::string & | propName () |
void | propName (std::string name) |
std::string & | propName () |
void | propName (std::string name) |
void | propVal (unsigned int val) |
unsigned int | propVal () |
void | propVal (unsigned int val) |
unsigned int | propVal () |
void | reset () |
void | reset () |
void | resume (void) |
void | resume (void) |
double | rms (void) const |
double | rms (void) const |
void | start (void) |
void | start (void) |
void | stop (void) |
void | stop (void) |
Private Attributes | |
float | m_elapsed |
double | m_mean |
double | m_meanTimePerObject |
double | m_meanVal |
double | m_ms |
std::string | m_name |
int | m_NmeanTimePerObject |
int | m_numberOfMeasurements |
bool | m_paused |
std::string | m_propName |
unsigned int | m_propVal |
bool | m_started |
timeval | m_startTime |
timeval | m_startTime |
|
00014 : m_name (name) { 00015 m_numberOfMeasurements = 0; 00016 m_mean = 0.0; 00017 m_ms = 0.0; 00018 m_elapsed = 0.0; 00019 m_started=false; 00020 m_paused=false; 00021 m_propVal = 0; 00022 m_meanVal = 0; 00023 m_meanTimePerObject = 0.0; 00024 m_NmeanTimePerObject = 0; 00025 }
|
|
|
|
00023 { return (m_started? 0.0 : m_elapsed);}
|
|
00023 { return (m_started? 0.0 : m_elapsed);}
|
|
00025 { return m_mean;}
|
|
00025 { return m_mean;}
|
|
00040 { return m_meanVal;}
|
|
00040 { return m_meanVal;}
|
|
00041 { return m_meanTimePerObject;}
|
|
00041 { return m_meanTimePerObject;}
|
|
00021 { return m_name; }
|
|
00021 { return m_name; }
|
|
00031 { return m_numberOfMeasurements;}
|
|
00031 { return m_numberOfMeasurements;}
|
|
|
|
|
|
|
|
00080 { 00081 struct timeval tv; 00082 00083 // only pause if started 00084 // a pause while paused is ignored 00085 if (m_paused || !m_started) return; 00086 m_paused = true; 00087 gettimeofday(&tv, 0); 00088 00089 float mtime; 00090 int secs, usecs; 00091 00092 if (tv.tv_sec >= m_startTime.tv_sec) { 00093 secs = tv.tv_sec - m_startTime.tv_sec; 00094 } else { 00095 secs = tv.tv_sec - m_startTime.tv_sec + SecsInDay; 00096 } 00097 usecs = tv.tv_usec - m_startTime.tv_usec; 00098 mtime = static_cast<float>(secs)*1000. + static_cast<float>(usecs)/1000.; 00099 m_elapsed += mtime; // time so far 00100 }
|
|
00035 { return m_propName; }
|
|
00034 { m_propName = name; }
|
|
00035 { return m_propName; }
|
|
00034 { m_propName = name; }
|
|
00038 { m_propVal = val; }
|
|
00037 { return m_propVal;}
|
|
00038 { m_propVal = val; }
|
|
00037 { return m_propVal;}
|
|
|
|
|
|
|
|
00102 { 00103 struct timeval tv; 00104 00105 if (!m_started) { 00106 start(); // resume acts as start if not started 00107 } else if (m_paused) { 00108 m_paused = false; 00109 gettimeofday(&tv, 0); 00110 m_startTime = tv; 00111 } 00112 }
|
|
|
|
|
|
|
|
00027 { 00028 struct timeval tv; 00029 00030 m_started = true; 00031 m_paused = false; 00032 m_elapsed = 0.0; 00033 m_propVal = 0; 00034 // if already started, the start time will be over-written 00035 gettimeofday(&tv, 0); 00036 m_startTime = tv; 00037 }
|
|
|
|
00039 { 00040 struct timeval tv; 00041 00042 if (!m_started) return; 00043 00044 gettimeofday(&tv, 0); 00045 m_started = false; 00046 00047 if (!m_paused) { 00048 float mtime; 00049 int secs, usecs; 00050 00051 if (tv.tv_sec >= m_startTime.tv_sec) { 00052 secs = tv.tv_sec - m_startTime.tv_sec; 00053 } else { 00054 secs = tv.tv_sec - m_startTime.tv_sec + SecsInDay; 00055 } 00056 usecs = tv.tv_usec - m_startTime.tv_usec; 00057 mtime = static_cast<float>(secs)*1000. + static_cast<float>(usecs)/1000.; 00058 00059 // elapsed time 00060 m_elapsed += mtime; 00061 00062 } 00063 00064 // statistics - mean, rms 00065 double denom = static_cast <double> (++m_numberOfMeasurements); 00066 double d = m_elapsed - m_mean; 00067 m_mean += d / denom; 00068 double dd = m_elapsed*m_elapsed - m_ms; 00069 m_ms += dd / denom; 00070 00071 // mean property 00072 m_meanVal += static_cast <double> (m_propVal - m_meanVal) / denom; 00073 if (m_propVal !=0) { 00074 double timePerObject = m_elapsed/static_cast <double>(m_propVal); 00075 m_meanTimePerObject += static_cast <double> (timePerObject - m_meanTimePerObject) / 00076 static_cast<double> (++m_NmeanTimePerObject); 00077 } 00078 }
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|