我正在尝试优化朋友给我的一段代码,但我的平均执行时间基准非常不稳定,我不知道为什么/如何修复它。
代码:
#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 次不同运行的输出:
- 804 毫秒
- 702 毫秒
- 394 毫秒
- 642 毫秒
- 705 毫秒
我尝试了多种不同的方法来获取平均执行时间,但每种方法要么没有给我足够精确的答案,要么给我一个完全不稳定的答案。我不知道现在该做什么,任何帮助将不胜感激!
我知道这些类型的基准测试非常依赖于系统,所以我在下面列出了我的系统规格:
- Ubuntu 12.10 x64
- 7.8 GiB 内存
- 英特尔酷睿 i7-3770 CPU @ 3.40GHz x 8
- GeForce GT 620/PCIe/SSE2
编辑
谢谢大家的意见,但我决定使用 gprof 而不是自己构建。再一次感谢你!