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。