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