clock()与clock_gettime()的简单比较

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时间精度更高,因此估计其得到的程序运行时间应该更改准确。关于那个函数更加精确欢迎大家讨论。

你可能感兴趣的:(Clock,clock_gettime)