PSFEstimationwithCPSO
|
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 }