C_使用clock()函数获取程序执行时间

时间:2023-03-08 17:29:10
C_使用clock()函数获取程序执行时间

clock():捕捉从程序开始运行到clock()被调用时所耗费的时间。这个时间单位是clock tick ,即“时钟打点”。

常数CLK_TCK:机器时钟每秒所走的时钟打点数。

 #include <stdio.h>
#include <time.h> colck_t start, stop;
/* clock_t 是clock() 函数返回的变量类型*/ double duration;
/* 记录被测函数运行时间,以秒为单位*/ int main()
{
/*不在测试范围内的准备工作写在clock()调用之前*/
start = clock(); /* 开始计时 */
MyFunction(); /* 把被测函数加在这里 */
stop = clock(); /* 停止计时 */
duration = ((double)(stop - start))/CLK_TCK; /* 其他不在测试范围的处理写在后面,eg:输出duration的值*/
}

实验_eg:执行下面打印一次“Hello World!”的时间

     注意:因为程序执行的太快,所以显示为0;

 #include <stdio.h>
#include <time.h>
void hello();
int main(){
clock_t start, stop;
double duration;
start = clock();
hello();
stop = clock();
duration = ((double)(stop - start))/CLK_TCK;
printf("该程序运行的时间是:%f\n",duration);
return ;
}
void hello(){
printf("Hello World!\n");
}

C_使用clock()函数获取程序执行时间

解决方案:让被测函数重复运行充分多次,使得测出的总的时钟打点间隔充分长,最后计算被测函数平均运行的时间。

 #include <stdio.h>
#include <time.h> #define MAXK 1e5 /* 被测函数最大重复调用次数 */ void hello();
int main(){
int i;
clock_t start, stop;
double duration;
start = clock();
for(i=; i<MAXK; i++){
hello();
}
stop = clock();
duration = ((double)(stop - start))/CLK_TCK/MAXK; printf("duration = %f\n",duration);//0.00003s左右
return ;
} void hello(){
printf("Hello world!");
}

C_使用clock()函数获取程序执行时间