]> Creatis software - clitk.git/blob - common/clitkTimer.h
More MSVC stuff
[clitk.git] / common / clitkTimer.h
1 #ifndef CLITKTIMER_H
2 #define CLITKTIMER_H
3
4 /**
5    ===================================================================
6    * @file   clitkTimer.h
7    * @author David Sarrut <David.Sarrut@creatis.insa-lyon.fr>
8    * @date   18 Jul 2007 16:26:08
9
10    * @brief  
11
12    ===================================================================*/
13
14 #include "clitkCommon.h"
15 #include <ctime> 
16 #if defined(UNIX)
17 #  include <sys/time.h>
18 #  include <sys/resource.h>
19 #elif defined(WIN32)
20 #  include <windows.h>
21 #endif
22 #include <iostream>
23 #include <utility>
24
25 namespace clitk {
26
27   class Timer {
28   public:
29     
30     //====================================================================
31     Timer();
32     void Start();
33     void Stop(bool accumulate=true);
34     void Reset();
35     void Print(std::ostream & os=std::cout) const; 
36     void Print(std::string text, std::ostream & os=std::cout) const;
37     //====================================================================
38     
39     //====================================================================
40     long double GetTimeInMicroSecond()     const { return mElapsed; }
41     long double GetMeanTimeInMicroSecond() const { return mElapsed/mNumberOfCall; }
42     long int GetNumberOfCall()             const { return mNumberOfCall; }
43     //====================================================================
44     
45   protected:
46 #if defined(UNIX)
47     rusage mBegin; 
48     rusage mEnd;
49 #elif defined(WIN32)
50     unsigned __int64 mBegin;
51     unsigned __int64 mEnd;
52     unsigned __int64 mFrequency;
53 #endif
54     long double mElapsed;
55     long int mNumberOfCall;
56   };
57
58 } // end namespace
59
60 // #endif
61 #endif /* end #define CLITKTIMER_H */
62