在我的程序的顶部和末尾,我使用 clock() 来计算我的程序需要多长时间才能完成。不幸的是,它的报告时间似乎只有一半。我用“时间”命令仔细检查了这一点。
我的程序报告:在 45.86 秒内完成
时间命令报告:real 0m22.837s user 0m45.735s sys 0m0.152s
用我的手机计时,它在 23 秒内完成(又名:“真实”时间)。“用户”时间是所有线程的总和,因为我使用的是 OpenMP,所以这很有意义。(你可以在这里阅读:What do 'real', 'user' and 'sys' mean in the output of time(1)?)
那么,为什么 clock() 在“用户”时间而不是“实时”时间报告?我应该使用不同的函数来计算我的程序运行了多长时间?
作为旁注,Windows 的时钟()按预期工作并“实时”报告。