eclipse平台下,C++做的工程里,测试某功能模块的时间应该用哪个函数?

在eclipse平台下,用C++开发的项目,想测试一下某功能模块的耗时,请问应该用哪个函数?

评论 (2)链接2012-03-22 
  • 0 支持
    用c++函数不就行了么? – chima123 2012-03-22
  • 0 支持
    哪个函数?好像都不合适 – 一滴瀑布 2012-03-22
  
#include "time.h"

clock_t beg, end;
beg = clock();
int cnt = 0;
for(; cnt < 1000000000; ) ++cnt;
end = clock();
printf("%f",(double)(end - beg));





2657.000000
该答案已被锁定,无法对其进行评论,编辑及投票。
()
评论 (1)链接 • 2012-09-24
  • 0 支持
    谢谢你的答案。 – 一滴瀑布 2012-10-09

用localtime就可以啊,可以这样做
time_t t = time(0);
tm tms = *localtime(&t);
//这里调用你的功能模块
//Function......

t = time(0);
tm tms1 = *localtime(&t);
int nTimeLag = tms1.tm_sec - tms.tm_sec;
nTimeLag即是你的功能模块耗时的秒数,当然,如果你的模块耗时较长,也可以用tms1.tm_min - tms.tm_min,tms1.tm_hour - tms.tm_hour甚至tms1.tm_mday - tms.tm_mday,如果你的模块耗时太短,由于此结构最多只能精确到秒,所以如果想得到毫秒级的时间,自行把模块循环调用1000次吧,如果想得到微秒级的,循环1000000次,虽然不太完美,也勉强够用了。

该答案已被锁定,无法对其进行评论,编辑及投票。
()
评论 (2)链接 • 2012-03-23
  • 0 支持
    呵呵,谢谢,我的好像要微秒级的,那应该是调完除以1000就可以了吧 – 一滴瀑布 2012-03-23
  • 0 支持
    不用除,因为是int型的数据,小数点后面的已经自动舍去了,再怎么除也是0.要得到微秒级的时间得先循环调用1000000次,然后得到的结果大至上就是微秒级的耗时了 – 活个痛快 2012-03-23

想比较系统的分析出程序各个函数的运行时间,建议使用gprof

gprof是GNU profiler工具。可以显示程序运行的“flat profile”,包括每个函数的调用次数,每个函数消耗的处理器时间。也可以显示“调用图”,包括函数的调用关系,每个函数调用花费了多少时间。还可以显示“注释的源代码”,是程序源代码的一个复本,标记有程序中每行代码的执行次数。
详细的使用手册

该答案已被锁定,无法对其进行评论,编辑及投票。
()
评论 (1)链接 • 2012-03-23
  • 0 支持
    谢谢,不过不太会用。。。。 – 一滴瀑布 2012-03-23
  
time_t beg,end;
time((time_t*)&beg);
time((time_t*)&end);
printf("used:%ld\n", end-beg);
该答案已被锁定,无法对其进行评论,编辑及投票。
()
评论 (2)链接 • 2012-03-23
  • 0 支持
    谢谢~,没太看懂这句2.time((time_t*)&beg);是什么意思 – 一滴瀑布 2012-03-23
  • 0 支持
    取当前时间。 – chima123 2012-03-24
德问是一个专业的编程问答社区,请 登录注册 后再提交答案