gpt4 book ai didi

C++:Linux 中的计时(使用 clock())不同步(由于 OpenMP?)

转载 作者:太空宇宙 更新时间:2023-11-03 10:32:18 32 4
gpt4 key购买 nike

在我的程序的开头和结尾,我使用 clock() 来确定我的程序需要多长时间才能完成。不幸的是,它似乎需要报告时间的一半。我用“时间”命令仔细检查了这一点。

我的程序报告:45.86s完成

时间命令报告:真正的 0m22.837s用户 0m45.735s系统 0m0.152s

用我的手机计时,它在 23 秒内完成(又名:“真实”时间)。 “用户”时间是所有线程的总和,这很有意义,因为我使用的是 OpenMP。 (您可以在这里阅读:What do 'real', 'user' and 'sys' mean in the output of time(1)?)

那么,为什么 clock() 报告的是“用户”时间而不是“实时”时间?我应该使用其他函数来计算我的程序运行了多长时间吗?

作为旁注,Windows 的 clock() 按预期工作并“实时”报告。

最佳答案

user 0m45.735s

clock() 根据 7.27.2.1 测量进程使用的 CPU 时间(尽可能好)

The clock function returns the implementation’s best approximation to the processor time used by the program since the beginning of an implementation-defined era related only to the program invocation.

而不是挂钟时间。因此,clock() 报告的时间接近 time 报告的用户 时间是正常且符合标准的。

要测量耗时,如果你可以假设 POSIX,使用 clock_gettime 可能是最好的选择,标准函数 time() 也可以用于此,但是不是很细粒度。

关于C++:Linux 中的计时(使用 clock())不同步(由于 OpenMP?),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13351396/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com