clock()使用方法实例如下:
#include <stdio.h>
#include <time.h>
int main()
{
int i;
clock_t start,finish;
start = clock();
for(i=0;i<10000000;i++){}
finish = clock();
printf("%lf\n",(double)(finish-start)/CLOCKS_PER_SEC);
return 0;
}
其中time_t为long类型,CLOCKS_PER_SEC在linux下为1000000,即clock() 函数在linux下精度为微妙(在windows下精度为毫秒),在我的机器上程序运行时间大概为0.024s左右,关于time_t类型与CLOCKS_PER_SEC为什么为以上数值,会另开一帖专门讨论。
clock_gettime()的使用方法实例如下:
#include <stdio.h>
#include <time.h>
int main()
{
int i;
struct timespec t1={0,0};
struct timespec t2={0,0};
double temp;
clock_gettime(CLOCK_REALTIME,&t1);
for(i=0;i<10000000;i++){}
clock_gettime(CLOCK_REALTIME,&t2);
if(t1.tv_nsec>t2.tv_nsec){
temp = (double)(t2.tv_sec-t1.tv_sec-1) + ((double)(1000000000+t2.tv_nsec-t1.tv_nsec)/1e9);
}else{
temp = (double)(t2.tv_sec-t1.tv_sec) + ((double)(t2.tv_nsec-t1.tv_nsec)/1e9);
}
printf("%lf\n",temp);
return 0;
}
clock_gettime()在linux在精度为纳秒,其中tv_sec为秒数部分,tv_nsec为纳秒部分,在使用时要将秒的时间与纳秒时间相加才是程序的实际运行时间。上述程序在我的机器上运行时间大约为0.027s左右,运行时间基本相等。
由于clock_gettime时间精度更高,因此估计其得到的程序运行时间应该更改准确。关于那个函数更加精确欢迎大家讨论。