在c语言程序当中,我们想要得到程序的运行性能该怎么办呢?
首先我们可以利用time.h库来计算程序运行时间
给出代码,测试一个简单的程序性能
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int add(int m, int n)
{
return m + n;
}
int main()
{
int m = 50;
int n = 60;
clock_t start_time, end_time; //clock_t为long类型
start_time = clock(); //程序开始有多少个计时单元
// 执行一定次数的加法运算
int iterations = 1000000;
for (int i = 0; i < iterations; i++) {
int result = add(m, n);
}
end_time = clock();
// 计算总耗时
double elapsed_time = (double)(end_time - start_time) / CLOCKS_PER_SEC;
printf("Total iterations: %d\n", iterations);
printf("Elapsed time: %.6f seconds\n", elapsed_time);
printf("Average time per iteration: %.6f seconds\n", elapsed_time / iterations);
return 0;
}
代码解释:(1)在这个程序中我们导入了time.h头文件,在time.h文件中clock()函数的作用是返回从“开启这个程序进程”到“程序中调用clock()函数”时之间的CPU时钟计时单元(clock tick)数,在调用函数开始到结束都调用了这个函数。
(2)如何计算程序的耗时?我们通过time.h中的宏常量CLOCKS_PER_SEC来计算程序耗时,它用来表示一秒钟会有多少个时钟计时单元,每过千分之一秒(1毫秒),调用clock()函数返回的值就加1,那么程序运行的总计时单位除以一秒钟有多少个时间单位就可以得到程序允许的耗时。double elapsed_time = (double)(end_time - start_time) / CLOCKS_PER_SEC
测试结果
1.我们可以通过修改iterations的值来改变add()的调用次数,先设置为10000次,来检测程序的运行时间
2.我们可以看到程序的总运行时间为0.002秒,那么可不可以更加精确呢?是不可以的,因为在c/c++标准库中对于时间的精确程度只能到达千分之一毫秒(一毫秒)。那么为什么程序平均运行时间为0呢?因为每次运行时间都小于一毫秒,所以是显示不出来的
3.我们可以通过改变iterations的值来改变运行次数,这次我们设置为一千万次。来看看运行结果
可以看到这次运行时间增加了。随着次数的增加时间必然会增加。