timeval的大小比较
int timevalcmp(struct timeval * t1, struct timeval * t2)
{
if (t1->tv_sec == t2->tv_sec)
return (t1->tv_usec == t2->tv_usec) ? 0 :
(t1->tv_usec > t2->tv_usec) ? 1 : -1;
return (t1->tv_sec > t2->tv_sec) ? 1 : -1;
}
timeval转为double类型的秒
double timeval_to_double(struct timeval * tv)
{
double d;
d = tv->tv_sec + tv->tv_usec / 1000000;
return d;
}
两个timeval类型之间的时间差
double timeval_diff(struct timeval * tv0, struct timeval * tv1)
{
double time1, time2;
time1 = tv0->tv_sec + (tv0->tv_usec / 1000000.0);
time2 = tv1->tv_sec + (tv1->tv_usec / 1000000.0);
time1 = time1 - time2;
if (time1 < 0)
time1 = -time1;
return time1;
}
函数耗时测试
#define GET_TIME(t, code) { t = GetMicrosecondCount();\
code; \
t = GetMicrosecondCount() - t;}
long int GetMicrosecondCount()
{
struct timeval tv;
gettimeofday(&tv, NULL);
return tv.tv_sec*1000000 + tv.tv_usec;
}