C语言clock()函数测试程序运行时间
分析算法时间复杂度时,有时需要测试函数执行时间。此时可以借助C语言提供的clock()函数。
clock()函数
捕捉从程序开始运行到clock()被调用所耗费的时间。这个时间单位是clock tick, 即“时钟打点”。
常数CLK_TCK
机器时钟每秒所走的时钟打点数,不同机器之间可能存在差异。
调用clock()记录函数执行时间
使用clock()时,需include time.h头文件。
常用模板:
#include<stdio.h>
#include<time.h>
clock_t start, end;//clock_t是clock()返回的变量类型
double duration;//记录被测函数运行时间,以秒为单位
int main(){
//不在测试范围内的预处理放在clock()被调用之前
start = clock();//开始计时
function();//被测函数
end = clock();
duration = ((double)(start - end)) / CLK_TCK;
//其他不在测试范围内的处理写在后面,例如输出duration的值
return 0;
}
代码举例(Hanoi塔问题)
#include<stdio.h>
#include<time.h>
void HanoiTower(int n,char source,char temp,char target){
if(n==1)
{
printf("%c->%c\n",source,target);
}
else{
HanoiTower(n-1,source,target,temp);
printf("%c->%c\n",source,target);
HanoiTower(n-1,temp,source,target);
}
}
int main()
{
int n;
clock_t start_time,end_time;
char source='A',temp='B',target='C';
scanf("%d",&n);
start_time=clock();
HanoiTower(n,source,temp,target);
end_time=clock();
double duration;
duration = ((double)(end_time - start_time)) / CLK_TCK;
printf("%f",duration);
return 0;
}