00001 
00002 
00003 
00004 
00005 
00006 
00007 
00008 
00009 
00010 
00011 
00012 
00013 
00014 
00015 
00016 
00017 
00018 
00019 
00020 #ifndef _TICKS_I_H
00021 #define _TICKS_I_H
00022 #ifndef _WIN32
00023 
00024 #include <sys/time.h>
00025 #include <unistd.h>
00026 
00027 namespace Cgi {
00028 
00029 class Ticks
00030 {
00031 public:
00032         void Start() {
00033                 struct timeval tv;
00034                 struct timezone tz;
00035                 gettimeofday(&tv,&tz);
00036                 d0 = tv.tv_sec;
00037                 d0 *= 1000000;
00038                 d0 += tv.tv_usec;
00039                 dstop = d0;
00040                 dtemp = d0;
00041         }
00042         Ticks() {
00043                 Start();
00044         }
00045         ~Ticks() {
00046         }
00047         void Stop() {
00048                 struct timeval tv;
00049                 struct timezone tz;
00050                 gettimeofday(&tv,&tz);
00051                 dstop = tv.tv_sec;
00052                 dstop *= 1000000;
00053                 dstop += tv.tv_usec;
00054         }
00055         double Time(void) {
00056                 return dstop - d0;
00057         }
00058         void Time(char *s) {
00059                 sprintf(s,"%.4f sec",Time() / 1000000);
00060         }
00061         void TempTime(char *s) {
00062                 struct timeval tv;
00063                 struct timezone tz;
00064                 double dnow;
00065                 gettimeofday(&tv,&tz);
00066                 dnow = tv.tv_sec;
00067                 dnow *= 1000000;
00068                 dnow += tv.tv_usec;
00069                 double d = dnow - dtemp;
00070                 dtemp = dnow;
00071                 sprintf(s,"%.4f sec",d / 1000000);
00072         }
00073 private:
00074         double d0;
00075         double dstop;
00076         double dtemp;
00077 };
00078 
00079 } 
00080 
00081 #endif // _WIN32
00082 #endif // _TICKS_I_H