C语言clock()运行结果duration为0

C语言 库函数 clock_t clock(void) 返回程序执行起(一般为程序的开头)到调用该函数为止处理器时钟所使用的时间。
为计算语句运行时间我们可以定义两个clock_t类型的变量start和stop。

clock_t start,stop;

则运行时间测量方法如下:

	start=clock();
	sum(a,n,x);
	stop=clock();

stop-start则为运行时间间隔的时钟打点数,再定义一个double 变量duration.

double duration;
duration=(double)(stop-start)/CLK_TCK;

CLK_TCK是个常熟:机器时钟每秒所走的时钟打点数。则durantion为语句运行的秒数。

整体代码如下:

	clock_t start,stop;
	double duration;
	
	start=clock();
	sum(a,n,x);//需要测量运行时间的语句
	stop=clock();
	duration=(double)(stop-start)/CLK_TCK;
	printf("%6.2e\n",duration); 

运行一下,发现测量结果为0。为什么呢??
在这里插入图片描述
因为测量语句跑的太快了,没到1个tick的时间,怎么解决这个问题呢?只需要重复几遍该测量语句就好了。

	#define MAXK 1e7 //最大重复次数 
	start=clock();
	for(i=0;i<MAXK;i++) 
	{

		sum(a,n,x);
	}
	stop=clock();
	duration=(double)(stop-start)/CLK_TCK;
	printf("%6.2e\n",duration); 
	printf("%6.2e\n",duration/MAXK); 

多次循环该语句,还是不够大就加大循环次数,你要相信你的电脑跑得非常快。这里用了1e7次,得到的duration再除以MAXK循环次数,就是你要的单次运行结果了。如下图:

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值