/******************************************************************************* * BTimer.cpp Quantel Quentin BTimer * T.Barnaby, BEAM Ltd, 3/2/04 ******************************************************************************* */ #include <BTimer.h> #include <sys/time.h> BTimer::BTimer(){ clear(); } BTimer::~BTimer(){ } double BTimer::getTime() { struct timeval tp; gettimeofday(&tp, NULL); return ((double) tp.tv_sec + (double) tp.tv_usec * 1e-6); } void BTimer::add(BTimer& timer){ timer.olock.lock(); olock.lock(); onum += timer.onum; oaverage += timer.oaverage; if(timer.opeak > opeak) opeak = timer.opeak; olock.unlock(); timer.olock.unlock(); } void BTimer::clear(){ olock.lock(); onum = 0; ostartTime = 0.0; oendTime = 0.0; oaverage = 0.0; opeak = 0.0; olock.unlock(); } void BTimer::start(){ olock.lock(); ostartTime = getTime(); oendTime = 0.0; olock.unlock(); } void BTimer::stop(){ olock.lock(); oendTime = getTime(); onum++; oaverage += (oendTime - ostartTime); if((oendTime - ostartTime) > opeak){ opeak = (oendTime - ostartTime); } olock.unlock(); } double BTimer::getElapsedTime(){ double t; olock.lock(); t = getTime() - ostartTime; olock.unlock(); return t; } double BTimer::average(){ double ret; olock.lock(); ret = oaverage / onum; olock.unlock(); return ret; } double BTimer::peak(){ double ret; olock.lock(); ret = opeak; olock.unlock(); return ret; }