00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014 #ifndef OR_TOOLS_BASE_TIMER_H_
00015 #define OR_TOOLS_BASE_TIMER_H_
00016
00017 #include "base/basictypes.h"
00018 #include "base/macros.h"
00019
00020 namespace operations_research {
00021 class WallTimer {
00022 public:
00023 WallTimer();
00024
00025 void Start();
00026 void Stop();
00027 bool Reset();
00028 void Restart();
00029 bool IsRunning() const;
00030 int64 GetInMs() const;
00031 double Get() const;
00032 static int64 GetTimeInMicroSeconds();
00033
00034 private:
00035 int64 start_usec_;
00036 int64 sum_usec_;
00037 bool has_started_;
00038
00039 DISALLOW_COPY_AND_ASSIGN(WallTimer);
00040 };
00041
00042
00043
00044 class CycleTimer {
00045 public:
00046 CycleTimer();
00047 void Reset();
00048 void Start();
00049 void Stop();
00050 int64 GetInUsec() const;
00051 int64 GetInMs() const;
00052 private:
00053 enum State {
00054 INIT,
00055 STARTED,
00056 STOPPED
00057 };
00058 int64 time_in_us_;
00059 State state_;
00060 };
00061 }
00062 #endif // OR_TOOLS_BASE_TIMER_H_