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循环次数,就是你要的单次运行结果了。如下图: