C++程序記時可能有5種以上的方法,其中有些是Win專屬的校套,我們不作研究曼振。這里討論Linux下的幾種記時方法短条,他們精度各不相同鳖悠。
(1)gettimeofday()
這個函數(shù)記時精度較高琴许,是微秒級(1/1000000s)凫佛。其用法為
#include <sys/time.h>
...
timeval t1, t2;
gettimeofday(&t1,NULL);
//待記時的代碼區(qū)間
...
gettimeofday(&t2,NULL);
cout<<(t2.tv_sec-t1.tv_sec)*1000000+t2.tv_usec-t1.tv_usec<<endl;
其中井辆,頭文件為“sys/time.h”语婴,timeval是一個結(jié)構(gòu)體描孟,包含記錄秒和微秒的兩個成員
struct timeval{
long tv_sec; //秒
long tv_usec; //微妙
};
gettimeofday()函數(shù)的原型為
int gettimeofday(struct timeval*tv, struct timezone*tz )
其中timezone記錄時區(qū)信息砰左,一般不會用到匿醒,直接置為NULL即可。函數(shù)成功則返回0缠导,失敗-1廉羔。