4 =================================================
6 * @author David Sarrut <david.sarrut@creatis.insa-lyon.fr>
7 * @date 18 Jul 2007 16:27:45
12 =================================================*/
16 #include "clitkTimer.h"
18 //====================================================================
19 /// Constructs the class
20 clitk::Timer::Timer() {
23 QueryPerformanceFrequency((LARGE_INTEGER*)&mFrequency);
26 //====================================================================
28 //====================================================================
29 void clitk::Timer::Start() {
31 getrusage(RUSAGE_SELF, &mBegin);
33 QueryPerformanceCounter((LARGE_INTEGER*)&mBegin);
37 //====================================================================
39 //====================================================================
40 void clitk::Timer::Stop(bool accumulate) {
42 getrusage(RUSAGE_SELF, &mEnd);
44 mElapsed += (mEnd.ru_utime.tv_usec - mBegin.ru_utime.tv_usec)+
45 (mEnd.ru_utime.tv_sec - mBegin.ru_utime.tv_sec)*1000000;
48 QueryPerformanceCounter((LARGE_INTEGER*)&mEnd);
50 mElapsed += ((mEnd-mBegin)*1000000)/(long double)mFrequency;
57 //====================================================================
59 //====================================================================
60 void clitk::Timer::Print(std::ostream & os) const {
61 if (mNumberOfCall != 1) {
62 os << "Timer # = " << mNumberOfCall << std::endl;
63 os << "Timer total = " << mElapsed << " usec \t" << mElapsed/1000000.0 << " sec." << mElapsed/1000000.0/60 << " min."
64 << mElapsed/1000000.0/60/60 << " hours." << std::endl;
66 long double tus = mElapsed/mNumberOfCall;
67 long double ts = tus/1000000.0;
68 long double tm = ts/60.0;
69 long double th = tm/60.0;
70 os << "Timer = " << tus << " usec\t" << ts << " sec.\t" << tm << " min.\t" << th << " hours." << std::endl;
71 // os << "\tmBegin.ru_utime.tv_sec = " << mBegin.ru_utime.tv_sec << std::endl;
72 // os << "\tmEnd.ru_utime.tv_sec = " << mEnd.ru_utime.tv_sec << std::endl;
73 // os << "\tmBegin.ru_utime.tv_usec = " << mBegin.ru_utime.tv_usec << std::endl;
74 // os << "\tmEnd.ru_utime.tv_usec = " << mEnd.ru_utime.tv_usec << std::endl;
76 //====================================================================
78 //====================================================================
79 void clitk::Timer::Print(std::string text, std::ostream & os) const {
83 //====================================================================
85 //====================================================================
86 void clitk::Timer::Reset() {
90 //====================================================================
93 #endif /* end #define CLITKTIMER_CXX */