clock():捕捉从程序开始运行到clock()被调用时所耗费的时间。这个时间单位是clock tick,即“时钟打点”。
常数CLK_TCK:机器时钟每秒所走的时钟打点数
模板如下
#include<stdio.h>
#include<time.h>
clock_t shart,stop;
//*clock_t是clock()函数返回的变量类型
//定义两个变量 start stop
double duration;
//duration 记录被测函数运行时间,以秒为单位
int main()
{
//不在测试范围内的准备工作写在clock()调用之前,比如输入、预处理
start=clock();//开始计时
//start里存的是从main函数开始运行,到start被赋值这个时刻,一共走过多少ticks
MyFunction();//把被测函数加在这里
stop=clock();//停止计时
duration=((double)(stop-start))/CLK_TCK;
//计算运行时间
//其他不在测试范围的处理写在后面,例如输出duration的值
return 0;
}
实例:
#include<stdio.h>
#include<time.h>
#include<math.h>
clock_t start, stop;
double duration;
#define MAXN 10;
double f1(int n, double a[], double x);
double f2(int n, double a[], double x);
double f1(int n, double a[], double x)
{
int i;
double p = a[0];
for (i = 1; i <= n; i++)
{
p += (a[i] * pow(x, i));
}
return p;
}
double f2(int n, double a[], double x)
{
int i;
double p = a[n];
for (i = n; i > 0; i++)
{
p = a[i - 1] + x * p;
}
return p;
}
int main()
{
int i;
double a[MAXN];
//**VS调试报错,C4244“=”: 从“double”转换到“int”,可能丢失数据,我还没学太多,留着等我以后修改,或自行修改,抱歉**
for (i = 0; i < MANX; i++)
{
a[i] = (double)i;
}
start = clock();
f1(MAXN - 1, a, 1.1);
stop = clock();
duration = ((double)(stop - start)); / CLK_TCK;
printf("duration1=%6.2e\n", duration);
start = clock();
f2(MAXN - 1, a, 1.1);
stop = clock();
duration = ((double)(stop - start)) / CLK_TCK;
printf("duration2=%6.2e\n", duration);
return 0;
}