00001
00002
00008 #if !defined(__ads_Timer_h__)
00009 #define __ads_Timer_h__
00010
00011 #include "../defs.h"
00012
00013 #include <ctime>
00014 #include <cassert>
00015 #include <limits>
00016
00017 BEGIN_NAMESPACE_ADS
00018
00020 class Timer {
00021 public:
00022
00024 typedef double Number;
00025
00026 private:
00027
00028 clock_t _start;
00029
00030 public:
00031
00033 Timer() :
00034
00035 _start(std::numeric_limits<clock_t>::max())
00036 {}
00037
00039 Timer(const Timer& x) :
00040 _start(x._start)
00041 {}
00042
00044 const Timer&
00045 operator=(const Timer& x) {
00046
00047 if (&x != this) {
00048 _start = x._start;
00049 }
00050
00051 return *this;
00052 }
00053
00055 ~Timer()
00056 {}
00057
00059 void
00060 tic() {
00061 _start = std::clock();
00062 }
00063
00065 Number
00066 toc() {
00067 clock_t end = std::clock();
00068
00069 assert(_start != clock_t(- 1));
00070
00071 assert(end != clock_t(-1));
00072
00073 return Number(end - _start) / CLOCKS_PER_SEC;
00074 }
00075
00076 };
00077
00078 END_NAMESPACE_ADS
00079
00080 #endif