#include <TimerForSequencer.h>
Collaboration diagram for TimerForSequencer:
Public Member Functions | |
TimerForSequencer (std::string name, double factor) | |
Constructor. | |
~TimerForSequencer () | |
void | start () |
Start a time measurement. | |
double | stop () |
Stop time measurement and return the last elapsed time. | |
std::string | name () const |
returns the name | |
double | lastTime () const |
returns the last measured time | |
double | lastCpu () const |
returns the last measured time | |
MsgStream & | fillStream (MsgStream &s) const |
Write measured time into the message stream. | |
std::string | header () const |
header matching the previous format | |
Private Attributes | |
std::string | m_name |
double | m_factor |
longlong | m_startClock |
longlong | m_startCpu |
long | m_num |
double | m_lastTime |
double | m_lastCpu |
double | m_min |
double | m_max |
double | m_sum |
double | m_sumCpu |
Measure the time between start and stop, and compute average, min and max. In fact, measure the cpu time, and the elapsed time but givesmin/max only for elapsed.
Definition at line 14 of file TimerForSequencer.h.
TimerForSequencer::TimerForSequencer | ( | std::string | name, | |
double | factor | |||
) | [inline] |
TimerForSequencer::~TimerForSequencer | ( | ) | [inline] |
void TimerForSequencer::start | ( | ) | [inline] |
Start a time measurement.
Definition at line 34 of file TimerForSequencer.h.
00034 { 00035 m_startClock = System::currentTime( System::microSec ); 00036 m_startCpu = System::cpuTime( System::microSec ); 00037 }
double TimerForSequencer::stop | ( | ) | [inline] |
Stop time measurement and return the last elapsed time.
Definition at line 42 of file TimerForSequencer.h.
00042 { 00043 double cpuTime = double(System::cpuTime( System::microSec ) - m_startCpu ); 00044 double lastTime = double(System::currentTime( System::microSec ) - m_startClock ); 00045 00046 //== Change to normalized millisecond 00047 cpuTime *= m_factor; 00048 lastTime *= m_factor; 00049 00050 //== Update the counter 00051 m_num += 1; 00052 m_sum += lastTime; 00053 m_sumCpu += cpuTime; 00054 00055 if ( 1 == m_num ) { 00056 m_min = lastTime; 00057 m_max = lastTime; 00058 } else { 00059 if ( lastTime < m_min ) m_min = lastTime; 00060 if ( lastTime > m_max ) m_max = lastTime; 00061 } 00062 m_lastTime = lastTime; 00063 m_lastCpu = cpuTime; 00064 return lastTime; 00065 }
std::string TimerForSequencer::name | ( | ) | const [inline] |
double TimerForSequencer::lastTime | ( | ) | const [inline] |
returns the last measured time
Definition at line 71 of file TimerForSequencer.h.
00071 { return m_lastTime; }
double TimerForSequencer::lastCpu | ( | ) | const [inline] |
returns the last measured time
Definition at line 74 of file TimerForSequencer.h.
00074 { return m_lastCpu; }
Write measured time into the message stream.
Definition at line 77 of file TimerForSequencer.h.
00077 { 00078 double ave = 0.; 00079 double cpu = 0.; 00080 00081 if ( 0 != m_num ) { 00082 ave = m_sum / m_num; 00083 cpu = m_sumCpu / m_num; 00084 } 00085 00086 return s << m_name 00087 << format( "| %9.3f | %9.3f | %8.3f %9.1f | %7d | %9.3f |", 00088 cpu, ave, m_min, m_max, m_num, m_sum * 0.001 ); 00089 }
std::string TimerForSequencer::header | ( | ) | const [inline] |
header matching the previous format
Definition at line 92 of file TimerForSequencer.h.
00092 { 00093 std::string s = "Algorithm (millisec) | <user> | <clock> |"; 00094 s += " min max | entries | total (s) |"; 00095 return s; 00096 }
std::string TimerForSequencer::m_name [private] |
Definition at line 99 of file TimerForSequencer.h.
double TimerForSequencer::m_factor [private] |
Definition at line 100 of file TimerForSequencer.h.
longlong TimerForSequencer::m_startClock [private] |
Definition at line 101 of file TimerForSequencer.h.
longlong TimerForSequencer::m_startCpu [private] |
Definition at line 102 of file TimerForSequencer.h.
long TimerForSequencer::m_num [private] |
Definition at line 104 of file TimerForSequencer.h.
double TimerForSequencer::m_lastTime [private] |
Definition at line 105 of file TimerForSequencer.h.
double TimerForSequencer::m_lastCpu [private] |
Definition at line 106 of file TimerForSequencer.h.
double TimerForSequencer::m_min [private] |
Definition at line 107 of file TimerForSequencer.h.
double TimerForSequencer::m_max [private] |
Definition at line 108 of file TimerForSequencer.h.
double TimerForSequencer::m_sum [private] |
Definition at line 109 of file TimerForSequencer.h.
double TimerForSequencer::m_sumCpu [private] |
Definition at line 110 of file TimerForSequencer.h.