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

use*_*812 2 c++ clock

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

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

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

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

qua*_*dev 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';
}
Run Code Online (Sandbox Code Playgroud)

笔记:

  • 在对函数进行计时时,考虑运行时间N次,计算运行平均值,因为平滑极值点会更准确.
  • 如果你不能使用c ++ 11,那么这boost::chrono是一个非常好(非常接近)的选择.