计算C中经过的时间

新手上路,请多包涵

我需要计算我的功能经过的时间。现在我正在使用 std::clock 并且据我了解这是测量 CPU 时间,这可能与实时不同。

 std::clock_t start;
double duration;

start = std::clock();

someFunctionToMeasure();

duration = (std::clock() - start) / (double)CLOCKS_PER_SEC;

所以有两件事我想知道

  1. std::clock 究竟是如何工作的?它只是在计算该功能时测量CPU吗?

  2. 有没有更好的方法来测量计算我的函数所用的时间?

原文由 mereth 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 424
1 个回答

使用 <chrono> ,您需要的代码可能如下所示:

 using clock = std::chrono::system_clock;
using sec = std::chrono::duration<double>;
// for milliseconds, use using ms = std::chrono::duration<double, std::milli>;

const auto before = clock::now();

someFunctionToMeasure();

const sec duration = clock::now() - before;

std::cout << "It took " << duration.count() << "s" << std::endl;

注意:感谢霍华德对上述内容的有益评论。

如果您多次需要此代码段并且开始/结束大约是您调用 someFunctionToMeasure() 的范围的入口和出口点,则将其包装到一个实用程序类中可能是有意义的,该类可以进行两次调用 now() 在构造函数和析构函数中。

原文由 lubgr 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题