C 在Linux中测量应用程序的运行时

C 在Linux中测量应用程序的运行时,c,linux,runtime,C,Linux,Runtime,我有一堆应用程序,它们是通过自己的makefile编译的。你能告诉我什么是最好的方式来衡量他们的运行时间吗? 我曾在linux中尝试过“time”命令,但结果没有那么精确和稳定。 我还尝试添加clock_gettime()函数,但是,有两个问题与之相关。 1) 应用程序的数量太多,无法做到这一点。 2) 即使我可以将clock_gettime()添加到所有应用程序中,我也不知道如何将“-lrt”添加到它们的makefile中 谢谢阅读手册页 最重要的是,运行几次您想要基准测试的程序。如果碰巧访问

我有一堆应用程序,它们是通过自己的makefile编译的。你能告诉我什么是最好的方式来衡量他们的运行时间吗? 我曾在linux中尝试过“time”命令,但结果没有那么精确和稳定。 我还尝试添加clock_gettime()函数,但是,有两个问题与之相关。 1) 应用程序的数量太多,无法做到这一点。 2) 即使我可以将clock_gettime()添加到所有应用程序中,我也不知道如何将“-lrt”添加到它们的makefile中

谢谢阅读手册页

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

我觉得这本书很好。它有很多选择。你应该至少重复3到4次跑步。请尝试
time
您的程序或
/usr/bin/time-v
您的程序

仅在某些程序中需要(您可以通过修改来调用它)。使用最新的内核和
libc
(例如kernel 3.9和libc 2.17),您不需要再链接
-lrt
来获取它(它现在位于
libc

您也可以使用
gettimeofday
clock

我已经使用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);

}
#包括
int main()
{
浮点毫秒=0;
结构timeval开始、结束;
字符*人[]={“5#8”、“5#7”、“6#0”、“5#7”};
//printf(“%d”,获取高度(人));
gettimeofday(&start,NULL);
对于(int z=0;z