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