Main Page | Namespace List | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Namespace Members | Class Members | File Members | Related Pages

BesTimer Class Reference

#include <BesTimer.h>

List of all members.

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


Constructor & Destructor Documentation

BesTimer::BesTimer const std::string  name  ) 
 

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     }

BesTimer::BesTimer const std::string  name  ) 
 


Member Function Documentation

float BesTimer::elapsed void   )  const [inline]
 

00023 { return (m_started? 0.0 : m_elapsed);}

float BesTimer::elapsed void   )  const [inline]
 

00023 { return (m_started? 0.0 : m_elapsed);}

double BesTimer::mean void   )  const [inline]
 

00025 { return m_mean;}

double BesTimer::mean void   )  const [inline]
 

00025 { return m_mean;}

double BesTimer::meanPropVal  )  [inline]
 

00040 { return m_meanVal;}

double BesTimer::meanPropVal  )  [inline]
 

00040 { return m_meanVal;}

double BesTimer::meanTimePerObject  )  [inline]
 

00041 { return m_meanTimePerObject;}

double BesTimer::meanTimePerObject  )  [inline]
 

00041 { return m_meanTimePerObject;}

std::string& BesTimer::name void   )  [inline]
 

00021 { return m_name; }

std::string& BesTimer::name  )  [inline]
 

00021 { return m_name; }

int BesTimer::number_of_measurements void   )  const [inline]
 

00031 { return m_numberOfMeasurements;}

int BesTimer::number_of_measurements void   )  const [inline]
 

00031 { return m_numberOfMeasurements;}

bool BesTimer::operator< BesTimer it  )  [inline]
 

00044 { return (this->name() < it.name());}

bool BesTimer::operator< BesTimer it  )  [inline]
 

00044 { return (this->name() < it.name());}

void BesTimer::pause void   ) 
 

void BesTimer::pause void   ) 
 

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     }

std::string& BesTimer::propName  )  [inline]
 

00035 { return m_propName; }

void BesTimer::propName std::string  name  )  [inline]
 

00034 { m_propName = name; }

std::string& BesTimer::propName  )  [inline]
 

00035 { return m_propName; }

void BesTimer::propName std::string  name  )  [inline]
 

00034 { m_propName = name; }

void BesTimer::propVal unsigned int  val  )  [inline]
 

00038 { m_propVal = val; } 

unsigned int BesTimer::propVal  )  [inline]
 

00037 { return m_propVal;}

void BesTimer::propVal unsigned int  val  )  [inline]
 

00038 { m_propVal = val; } 

unsigned int BesTimer::propVal  )  [inline]
 

00037 { return m_propVal;}

void BesTimer::reset  ) 
 

void BesTimer::reset  ) 
 

00114                           { 
00115       if (!m_started) {
00116         m_elapsed = 0.0; 
00117         m_propVal = 0;
00118       }
00119     }

void BesTimer::resume void   ) 
 

void BesTimer::resume void   ) 
 

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     }

double BesTimer::rms void   )  const [inline]
 

00026                              { 
00027       double var = m_ms - m_mean*m_mean;
00028       return (var > 0 ? sqrt(var) : 0.0);
00029     }

double BesTimer::rms void   )  const [inline]
 

00026                              { 
00027       double var = m_ms - m_mean*m_mean;
00028       return (var > 0 ? sqrt(var) : 0.0);
00029     }

void BesTimer::start void   ) 
 

void BesTimer::start void   ) 
 

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     }

void BesTimer::stop void   ) 
 

void BesTimer::stop void   ) 
 

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     }


Member Data Documentation

float BesTimer::m_elapsed [private]
 

double BesTimer::m_mean [private]
 

double BesTimer::m_meanTimePerObject [private]
 

double BesTimer::m_meanVal [private]
 

double BesTimer::m_ms [private]
 

std::string BesTimer::m_name [private]
 

int BesTimer::m_NmeanTimePerObject [private]
 

int BesTimer::m_numberOfMeasurements [private]
 

bool BesTimer::m_paused [private]
 

std::string BesTimer::m_propName [private]
 

unsigned int BesTimer::m_propVal [private]
 

bool BesTimer::m_started [private]
 

struct timeval BesTimer::m_startTime [private]
 

struct timeval BesTimer::m_startTime [private]
 


The documentation for this class was generated from the following files:
Generated on Wed Feb 2 15:53:17 2011 for BOSS6.5.5 by  doxygen 1.3.9.1