如何在C ++中测量特定函数的运行时间{非常准确}

时间:2014-08-25 10:12:21

标签: c++ clock

我尝试用C ++测量代码的执行情况。 但那不是很准确。 这是我的代码:

std::clock_t start2;
start2 = std::clock();
myFunction();
printf("time of execution: %d ms\r\n",std::clock()-start2);

但是不够准确 执行时间低于10毫秒,但结果是10毫秒或0毫秒,这是不稳定的。

所以我在寻找更准确的解决方案。 有什么建议吗?

1 个答案:

答案 0 :(得分:6)

您可以使用标准std::chrono::high_resolution_clock标头中的<chrono>:它应该代表实现可用的最准确时钟。

示例:

#include <iostream>
#include <chrono>

int main()
{
    typedef std::chrono::high_resolution_clock Clock;
    auto t1 = Clock::now();
    MyFunction();
    auto t2 = Clock::now();
    std::cout <<std::chrono::duration_cast<std::chrono::nanoseconds>(t2 - t1).count() << '\n';
}

备注:

  • 当计时功能时,考虑运行时间N次,计算一个运行平均值,因为你平滑了极值点,它会更准确。
  • 如果你不能使用c ++ 11,boost::chrono是一个非常好(非常接近)的选择。