[英]Erratic average execution times for C function
我正在尝试优化朋友提供给我的代码块,但是我的平均执行时间基线非常不稳定,我不知道为什么/如何解决它。
码:
#include <sys/time.h>
#include <time.h>
#include <stdio.h>
#include "wall.h" /* Where his code is */
int main()
{
int average;
struct timeval tv;
int i;
for(i = 0; i < 1000; i++) /* Running his code 1,000 times */
{
gettimeofday(&tv, NULL); /* Starting time */
start(); /* Launching his code */
int ret = tv.tv_usec; /* Finishing time */
ret /= 1000; /* Converting to milliseconds */
average += ret; /* Adding to the average */
}
printf("Average execution time: %d milliseconds\n", average/1000);
return 0;
}
5种不同运行的输出:
我尝试了多种不同的方法来获取平均执行时间,但是每种方法都不能给我足够准确的答案,或者给我一个完全不稳定的答案。 我不知道该怎么办,任何帮助将不胜感激!
我知道这些基准测试类型很大程度上取决于系统,因此我在下面列出了我的系统规格:
编辑
谢谢大家的投入,但是我决定使用gprof而不是构建自己的gprof。 再一次感谢你!
这里存在几个问题,其中包括基准测试正在执行的代码的零细节,以及您使用了“ gettimeofday()”的方式有误(可能是不适当的)。
建议:
1)不要使用“ gettimeofday()”:
http://blog.habets.pp.se/2010/09/gettimeofday-should-never-be-used-to-measure-time
2)用gprof补充您的“经过时间”:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.