我正在尝试计算代码段完成所需的时间。但我并不是要确定进程运行所需的时间,而是确定考虑所有因素所花费的时间,例如,如果进程被中断,我也想计算该时间。
我正在使用 Clock() 来做到这一点。 Clock() 时钟计算总时间还是进程运行时间?
答案1
你没有提到,所以我假设你专门询问 Linux。
从man 3 clock
:
返回的值是使用的CPU时间就clock_t而言;要获取使用的秒数,请除以 CLOCKS_PER_SEC。
也就是说,时钟仅与处理器时间相关。如果您想要墙上的时间,您可以:
/proc/.../stat
使用与 等效的内容检查 的开始时间字段awk -v RS=\) '{ print $20 }' /proc/.../stat
,其中包含自启动以来进程的开始时间(以时钟周期为单位)。然后,您可以比较当前的正常运行时间,sysinfo()
以计算出自进程启动以来已经过去了多长时间(尽管令人烦恼的是,您需要通过除以 将正常运行时间转换为时钟CLK_TCK
)。或者,clock_gettime
与 一起使用CLOCK_MONOTONIC
,尽管它具有与 不同的 APIclock
。其一,您明确需要clock_gettime
在开始时调用并存储结果,使用它进行比较(尽管您可能已经这样做了,具体取决于您如何使用clock
)。您还需要接受这是 atime_t
而不是 aclock_t
,尽管您可以返回使用CLK_TCK
.