1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92
| #include "timerClass.h"
///////////////////////////////////////////////////////////////////////
// timerClass.cpp // David Foricher - 03/05/04 //
///////////////////////////////////////////////////////////////////////
// The Timer class provides you an way to determine the exectution //
// time of a program or one of its functions. (precision : 10ms) //
///////////////////////////////////////////////////////////////////////
Timer::Timer():startClockPeriodsM(0),endClockPeriodsM(0),startedM(false){}
Timer::Timer(const Timer &t):startClockPeriodsM(t.startClockPeriods()), endClockPeriodsM(t.endClockPeriods()), startedM(false){}
Timer::~Timer(){}
void Timer::start()
{
// Record the number of clock ticks since the beginning of the execution
startClockPeriodsM=clock();
startedM=true;
}
void Timer::stop()
{
endClockPeriodsM=clock();
startedM=false;
}
void Timer::reset()
{
startClockPeriodsM = 0;
endClockPeriodsM=0;
startedM=false;
}
void Timer::resume()
{
if(startClockPeriodsM==0) start();
else startedM=true;
}
bool Timer::started() const{ return startedM; }
clock_t Timer::startClockPeriods() const{ return startClockPeriodsM; }
clock_t Timer::endClockPeriods() const{ return endClockPeriodsM; }
double Timer::getTime(){
// CLK_TCK is a constant that is equal to the number of clock ticks per second.
// To have the result in ms, it is just divided by 1000
if(started())
return (clock()/((long) CLOCKS_PER_SEC/1000)-startClockPeriods()/((long) CLOCKS_PER_SEC/1000));
else
{
//printf("%d | %d\n", endClockPeriodsM, startClockPeriodsM);
return (endClockPeriodsM/((long) CLOCKS_PER_SEC/1000)-startClockPeriodsM/((long) CLOCKS_PER_SEC/1000));
}
}
bool Timer::operator == (Timer& t) {
return (getTime()==t.getTime());
}
bool Timer::operator != (Timer& t) { return !((*this)==t); }
bool Timer::operator <= (Timer& t) { return getTime()<=t.getTime(); }
bool Timer::operator >= (Timer& t) { return getTime()>=t.getTime(); }
bool Timer::operator < (Timer & t) { return !((*this)>=t); }
bool Timer::operator > (Timer& t) { return !((*this)<=t); }
Timer& Timer::operator = (const Timer& t)
{
startClockPeriodsM=t.startClockPeriods();
endClockPeriodsM=t.endClockPeriods();
return (*this);
} |
Partager