C++程序记时可能有5种以上的方法,其中有些是Win专属的,我们不作研究。这里讨论Linux下的几种记时方法,他们精度各不相同。
(1)gettimeofday()
这个函数记时精度较高,是微秒级(1/1000000s)。其用法为
#include <sys/time.h>
...
timeval t1, t2;
gettimeofday(&t1,NULL);
//待记时的代码区间
...
gettimeofday(&t2,NULL);
cout<<(t2.tv_sec-t1.tv_sec)*1000000+t2.tv_usec-t1.tv_usec<<endl;
其中,头文件为“sys/time.h”,timeval是一个结构体,包含记录秒和微秒的两个成员
struct timeval{
long tv_sec; //秒
long tv_usec; //微妙
};
gettimeofday()函数的原型为
int gettimeofday(struct timeval*tv, struct timezone*tz )
其中timezone记录时区信息,一般不会用到,直接置为NULL即可。函数成功则返回0,失败-1。