PSFEstimationwithCPSO
TimeTracker.cpp
00001 /*
00002  * TimeTracker.cpp
00003  *
00004  *  Created on: 28/09/2011
00005  *  Author: Peter Frank Perroni (pfperroni@inf.ufpr.br)
00006  */
00007 
00008 #include <iostream>
00009 #include <sstream>
00010 #include "TimeTracker.hpp"
00011 
00012 using namespace std;
00013 
00019 TimeTracker::TimeTracker(string _name){
00020         name.append(_name.c_str());
00021         resetAll();
00022 }
00023 
00027 void TimeTracker::start(){
00028         if(done){
00029                 resetAll();
00030         }
00031         else{
00032                 paused = false;
00033         }
00034         gettimeofday(&startTime, NULL);
00035         startClock = clock();
00036         processing = true;
00037 }
00038 
00042 void TimeTracker::pause(){
00043         if(paused){
00044                 return;
00045         }
00046         gettimeofday(&endTime, NULL);
00047         endClock = clock();
00048         currElapsedTime += (endTime.tv_sec - startTime.tv_sec) +
00049                         (endTime.tv_usec - startTime.tv_usec)/1000000.0l;
00050 //      currWorkSpent += (endClock - startClock) * 1000.0l / CLOCKS_PER_SEC;
00051         currWorkSpent += ((endClock - startClock) * 1.0) / CLOCKS_PER_SEC;
00052         resetCounters();
00053         processing = false;
00054         paused = true;
00055 }
00056 
00060 void TimeTracker::resume(){
00061         start();
00062 }
00063 
00069 long double TimeTracker::end(){
00070         if(!done){
00071                 pause();
00072                 done = true;
00073                 processing = false;
00074                 paused = false;
00075         }
00076         return elapsedTime();
00077 }
00078 
00088 long double TimeTracker::elapsedTime(){
00089         return currElapsedTime;
00090 }
00091 
00097 long double TimeTracker::workSpent(){
00098         return currWorkSpent;
00099 }
00100 
00104 void TimeTracker::reset(){
00105         resetAll();
00106 }
00107 
00111 void TimeTracker::resetAll(){
00112         resetCounters();
00113         currElapsedTime = currWorkSpent = 0;
00114         done = false;
00115         processing = false;
00116         paused = false;
00117 }
00118 
00122 void TimeTracker::resetCounters(){
00123         startTime.tv_sec = startTime.tv_usec =
00124                 endTime.tv_sec = endTime.tv_usec =
00125                 startClock = endClock = 0;
00126 }
00127 
00133 void TimeTracker::sumWork(TimeTracker *tt){
00134         currWorkSpent += tt->currWorkSpent;
00135 }
00136 
00142 void TimeTracker::sumTime(TimeTracker *tt){
00143         currElapsedTime += tt->currElapsedTime;
00144 }
00145 
00151 void TimeTracker::sum(TimeTracker *tt){
00152         sumTime(tt);
00153         sumWork(tt);
00154 }
00155 
00159 void TimeTracker::print(){
00160         cout << "Tracker: " << getName();
00161         cout << "\nElapsed Time: " << elapsedTime();
00162         cout << "\nWork Spent: " << workSpent() << '\n';
00163 }
00164 
00170 void TimeTracker::print(ostringstream *out){
00171         *out << "Tracker: " << getName();
00172         *out << "\nElapsed Time: " << elapsedTime();
00173         *out << "\nWork Spent (clock): " << workSpent() << '\n';
00174 }
 All Classes Functions