00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024 #ifndef Tanl_include_Timer_H
00025 #define Tanl_include_Timer_H
00026
00027 #ifdef _WIN32
00028 # include <winsock2.h>
00029 # include "win32/timecnv.h"
00030 #else
00031 # include <sys/time.h>
00032 #endif
00033
00034 namespace Tanl {
00035
00036 #define time_now(time) gettimeofday(time, 0);
00037
00043 class Timer {
00044
00045 public:
00046 Timer() { time_now(&l0); }
00047
00049 void start() { time_now(&l0); }
00050
00052 void stop() { time_now(&l1); }
00053
00055 void duration(char* buf, size_t bufSize) {
00056 long sec = l1.tv_sec - l0.tv_sec;
00057 long usec = l1.tv_usec - l0.tv_usec;
00058 if (usec < 0) {
00059 sec--;
00060 usec += 1000000;
00061 }
00062 if (sec > 60)
00063 snprintf(buf, bufSize, "%ld' %ld.%03ld sec", sec/60, sec%60, usec/1000);
00064 else if (sec > 0)
00065 snprintf(buf, bufSize, "%ld.%03ld sec", sec, usec/1000);
00066 else
00067 snprintf(buf, bufSize, "%ld.%03ld msec", usec/1000, usec%1000);
00068 }
00069
00070 struct timeval l0, l1;
00071 };
00072
00073 }
00074
00075 #endif // Tanl_include_Timer_H