48 if( getrusage( RUSAGE_SELF, &_start_usage ) != 0 )
51 char *c_err = strerror( myerrno ) ;
52 string err =
"getrusage failed in start: " ;
59 err +=
"unknown error" ;
83 if( getrusage( RUSAGE_SELF, &_stop_usage ) != 0 )
86 char *c_err = strerror( myerrno ) ;
87 string err =
"getrusage failed in stop: " ;
94 err +=
"unknown error" ;
104 bool success = timeval_subtract() ;
107 BESDEBUG(
"timing",
"failed to get timing" << endl ) ;
119 BESDEBUG(
"timing",
"timing not started" << endl ) ;
126 BESStopWatch::timeval_subtract()
128 struct timeval &
start = _start_usage.ru_utime ;
129 struct timeval &
stop = _stop_usage.ru_utime ;
132 if( stop.tv_usec < start.tv_usec )
134 int nsec = (start.tv_usec - stop.tv_usec) / 1000000 + 1 ;
135 start.tv_usec -= 1000000 * nsec ;
136 start.tv_sec += nsec ;
138 if( stop.tv_usec - start.tv_usec > 1000000 )
140 int nsec = (start.tv_usec - stop.tv_usec) / 1000000 ;
141 start.tv_usec += 1000000 * nsec ;
142 start.tv_sec -= nsec ;
147 _result.tv_sec = stop.tv_sec - start.tv_sec ;
148 _result.tv_usec = stop.tv_usec - start.tv_usec ;
151 return !(stop.tv_sec < start.tv_sec) ;
164 << (
void *)
this <<
")" << endl ;