今天学习time.h的计时用法,尝试循环运行求平均时间,结果显示循环次数越多,平均运行速度越快。
计时模板
使用头文件time.h
double start, end;
start = clock();
//********************************** Your Programme
//**********************************
end = clock();
printf("%if seconds", (end - start)/CLOCKS_PER_SEC);
多次运行求平均时间
运行几次便会发现运行时间有明显的波动,尝试重复执行求平均值
#include <stdio.h>
#include <time.h>
#define T 5 //循环次数
int main() {
double start, end;
double time_sum = 0;
for (int exc = 0 ; exc < T ; exc++)
{
start = clock();
//********************************** Your Programme
function();
//**********************************
end = clock();
time_sum += (end - start)/CLOCKS_PER_SEC;
}
printf("average %lf seconds\n", time_sum/T);
return 0;
程序看着并没有问题,改变T运行了几次之后明显发现平均时间不同
以下记录结果的测试程序为
for (int i = 0 ; i < 1000 ; i++)
printf("*");
T | Average_Time |
---|---|
1 | 0.037000 |
5 | 0.036000 |
10 | 0.033900 |
100 | 0.032780 |
500 | 0.031844 |
1000 | 0.031256 |
平均时间在明显地下降
经过测试,循环执行的程序中使用clock()仍不会改变这种下降的趋势,应该不是重复使用数据的原因。
个人猜测原因与硬件层面相关,求解答。