Clock() 是否返回进程或整个系统时钟计数?

Clock() 是否返回进程或整个系统时钟计数?

我正在尝试计算代码段完成所需的时间。但我并不是要确定进程运行所需的时间,而是确定考虑所有因素所花费的时间,例如,如果进程被中断,我也想计算该时间。

我正在使用 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,尽管它具有与 不同的 API clock。其一,您明确需要clock_gettime在开始时调用并存储结果,使用它进行比较(尽管您可能已经这样做了,具体取决于您如何使用clock)。您还需要接受这是 atime_t而不是 a clock_t,尽管您可以返回使用CLK_TCK.

相关内容