/* * timemeasurement.cpp * * Created on: Nov 25, 2011 * Author: muecklgr_local */ #include #include "GLTB/timemeasurement.h" namespace gltb { void TimeMeasurement::setMaxNumMeasurements(unsigned int maxNumMeasurements) { this->maxNumMeasurements = maxNumMeasurements; if(maxNumMeasurements > 0 && measurements.size() > maxNumMeasurements) { while(measurements.size() > maxNumMeasurements) { measurements.erase(measurements.begin()); } } } void TimeMeasurement::reset() { measurements.clear(); startOffset = 0; } void TimeMeasurement::start(bool continueMeasurement) { if(continueMeasurement && !measurements.empty()) { startOffset = measurements[measurements.size() - 1]; measurements.pop_back(); } else { startOffset = 0; } timer.start(); } void TimeMeasurement::stop() { double time = timer.stopHighRes(); addMeasurement(startOffset + time); startOffset = 0; } void TimeMeasurement::addMeasurement(double time) { measurements.push_back(time); if(maxNumMeasurements > 0 && measurements.size() > maxNumMeasurements) { while(measurements.size() > maxNumMeasurements) { measurements.erase(measurements.begin()); } } } double TimeMeasurement::getAverageTime(int numMeasurements) { double averageTime = 0; if(numMeasurements == -1) { numMeasurements = measurements.size(); } //std::cout << "numMeasurements=" << numMeasurements << std::endl; for(unsigned int i = measurements.size() - numMeasurements; i < measurements.size(); i++) { //std::cout << i << std::endl; averageTime += measurements[i]; } //std::cout << "averageTime=" << averageTime << std::endl; averageTime /= numMeasurements; return averageTime; } }