如何有效地测量运行时间的差异

时间:2010-04-10 18:23:53

标签: c++ performance

TC++PL中的一个练习要求:

  

编写一个函数,该函数返回一个值或根据参数抛出该值。测量两种方式之间的运行时差异。

很可惜,他从不解释如何衡量这些事情。我不确定我是否想要编写简单的“时间开始,时间结束”计数器,还是有更有效和实用的方法?

5 个答案:

答案 0 :(得分:5)

对于每个功能,

  • 获取开始时间
  • 将该功能调用一百万次(或更多......一百万不是那么多,真的)
  • 获取结束时间并从中减去开始时间

并比较结果。这与性能测量一样实用。

答案 1 :(得分:3)

考虑使用boost.timer,它就像它一样简单。

#include <iostream>
#include <boost/timer.hpp>

boost::timer timer;
for (int i = 0; i < 100000; ++i) {
  // ... whatever you want to measure
}
std::cout << timer.elapsed() << " seconds.\n";

答案 2 :(得分:1)

他没有解释,因为这是锻炼的一部分。

如果认真的话,我相信你应该写一些简单的“时间开始,时间结束”和内部的大循环。

答案 3 :(得分:1)

唯一重要的衡量标准是挂钟时间。不要让别人欺骗你相信其他任何东西。如果您不相信,请阅读 Lean Thinking

答案 4 :(得分:0)

最简单的方法是在运行之前和之后获得系统时间。如果没有提供足够的分辨率,你可以查看一些更高分辨率的系统定时器。

如果您需要更多详细信息,可以使用点跟踪等商业产品:http://www.jetbrains.com/profiler/