0

我有一堆通过自己的 Makefile 编译的应用程序。您能否让我知道衡量其运行时间的最佳方法是什么?我在 linux 中尝试过“时间”命令,但结果没有那么准确和稳定性。我也尝试添加 clock_gettime() 函数,但是,有两个与之相关的问题。1)申请数量太多,无法做到这一点。2) 即使我可以将clock_gettime() 添加到所有应用程序,我也不知道如何将“-lrt”添加到他们的Makefile。

谢谢

4

2 回答 2

1

我已经使用 gettimeofday() 成功地为我在 ubuntu 上的执行计时:

#include <sys/time.h>

int main()
{
float msec=0;
struct timeval start,end;
char* persons[] = {"5#8","5#7","6#0","5#7"};

//printf("%d",get_height(persons));

gettimeofday(&start,NULL);
for(int z=0;z<20000;z++)
    get_height(persons);
usleep(1000000);
gettimeofday(&end,NULL);

msec = (end.tv_sec-start.tv_sec)*1000 + (end.tv_usec-start.tv_usec)/(float)1000;
printf("avg time taken: %0.2f\n",msec/(float)20000);

}
于 2013-08-09T18:30:58.843 回答
0

阅读time(7)手册页。

最重要的是,多次运行您想要进行基准测试的程序。如果碰巧访问文件(这很常见),则文件可能位于系统缓存中(访问速度更快)。

我发现时间(1)足够好。它有很多选择。你应该重复至少 3 或 4 次运行。试试你time 的程序或你/usr/bin/time -v 的程序

clock_gettime(2)仅在某些程序中需要(您可以对其进行修改以调用它)。使用最近的内核和libc(例如内核 3.9 和 libc 2.17),您不再需要链接-lrt来获取它(它现在在libc

您也可以使用gettimeofdayclock

于 2013-08-09T18:30:49.837 回答