在 c 中测量 CPU 时间

新手上路,请多包涵

如果我有以下代码

clock_t t;
t = clock();
//algorithm
t = clock() - t;

t 将等于运行程序的滴答数。这和CPU时间一样吗?有没有其他方法可以测量 C++ 中的 CPU 时间?

操作系统——Debian GNU/Linux 我愿意接受任何可行的方法。我想比较两种算法的 CPU 时间。

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

阅读 1k
1 个回答

clock() 指定用于测量 CPU 时间,但并非所有实现都这样做。特别是微软在 VS 中的实现不会在多个线程运行时计算额外的时间,或者在程序的线程处于睡眠/等待状态时计算更少的时间。

另请注意, clock() 应该测量整个程序使用的 CPU 时间,所以虽然 //algorithm 中的多个线程使用的 CPU 时间将被测量,但其他线程不属于 //algorithm 也被计算在内。

clock() 是标准中指定的唯一测量 CPU 时间的方法,但是当然还有其他特定于平台的测量 CPU 时间的方法。

std::chrono 不包括任何用于测量 CPU 时间的时钟。它只有一个与系统时间同步的时钟,一个相对于实时以稳定速率前进的时钟,以及一个“高分辨率”但不一定测量 CPU 时间的时钟。

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

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