42 #include "BESStopWatch.h" 59 return start(name, MISSING_LOG_PARAM) ;
76 if( getrusage( RUSAGE_SELF, &_start_usage ) != 0 )
79 char *c_err = strerror( myerrno ) ;
80 string err =
"getrusage failed in start: " ;
81 err += (c_err != 0) ? c_err :
"unknown error";
89 err +=
"unknown error" ;
99 struct timeval &
start = _start_usage.ru_utime ;
100 double starttime =
start.tv_sec*1000.0 +
start.tv_usec/1000.0;
128 if( getrusage( RUSAGE_SELF, &_stop_usage ) != 0 )
130 int myerrno = errno ;
131 char *c_err = strerror( myerrno ) ;
132 string err =
"getrusage failed in stop: " ;
133 err += (c_err != 0) ? c_err :
"unknown error";
141 err +=
"unknown error" ;
153 bool success = timeval_subtract() ;
165 struct timeval &stop = _stop_usage.ru_utime ;
166 double stoptime = stop.tv_sec*1000.0 + stop.tv_usec/1000.0;
167 double elapsed = _result.tv_sec*1000.0 + _result.tv_usec/1000.0;
170 *(
BESDebug::GetStrm()) <<
"[" <<
BESDebug::GetPidStr() <<
"]["<< _log_name <<
"][" << _req_id <<
"][STOPPED][" << stoptime <<
"][ms][" << _timer_name <<
"][ELAPSED][" << elapsed <<
"][ms]" << endl;
189 if( getrusage( RUSAGE_SELF, &_stop_usage ) != 0 )
191 int myerrno = errno ;
192 char *c_err = strerror( myerrno ) ;
193 string err =
"getrusage failed in stop: " ;
200 err +=
"unknown error" ;
202 BESDEBUG( _log_name, err << endl ) ;
210 bool success = timeval_subtract() ;
213 BESDEBUG( _log_name,
"failed to get timing" << endl ) ;
225 BESDEBUG( _log_name,
"timing not started" << endl ) ;
234 BESStopWatch::timeval_subtract()
236 struct timeval &
start = _start_usage.ru_utime ;
237 struct timeval &stop = _stop_usage.ru_utime ;
240 if( stop.tv_usec <
start.tv_usec )
242 int nsec = (
start.tv_usec - stop.tv_usec) / 1000000 + 1 ;
243 start.tv_usec -= 1000000 * nsec ;
244 start.tv_sec += nsec ;
246 if( stop.tv_usec -
start.tv_usec > 1000000 )
248 int nsec = (
start.tv_usec - stop.tv_usec) / 1000000 ;
249 start.tv_usec += 1000000 * nsec ;
250 start.tv_sec -= nsec ;
255 _result.tv_sec = stop.tv_sec -
start.tv_sec ;
256 _result.tv_usec = stop.tv_usec -
start.tv_usec ;
259 return !(stop.tv_sec <
start.tv_sec) ;
271 strm << BESIndent::LMarg <<
"BESStopWatch::dump - (" 272 << (
void *)
this <<
")" << endl ;
static string GetPidStr()
return the pid as a string
virtual bool start(string name)
static ostream * GetStrm()
return the debug stream
virtual void dump(ostream &strm) const
dumps information about this object