用时钟测量CPU时间()

时间:2015-04-07 12:41:13

标签: c linux time linux-kernel libc

Libc provides the clock function用于测量Linux进程的CPU时间。我想知道这种方法在现代计算机中是否仍然可靠/有意义?为什么" CLOCKS_PER_SEC"是不变的?为什么每台机器都假设每秒1e6指令?而且,现代处理器甚至可以缩放时钟频率。

2 个答案:

答案 0 :(得分:1)

不,它不再相关了;它添加时设计很差,不再符合预期的用例。许多细节都被冻结以保持向后兼容性。

请改用POSIX.1-2001 clock_gettime(CLOCK_PROCESS_CPUTIME_ID, &ts)。理论上,使用它可以达到纳秒精度。

答案 1 :(得分:0)

让我分享一下我的理解。

CLOCKS_PER_SEC与CPU时钟没有直接关系。想象一下,你有抽象计时器,配置频率为每秒1000000个刻度。实际上这个频率非常低,可以通过划分MAIN_CLK在任何地方实现。 如果你的操作系统想要支持POSIX系统调用时钟,那么它必须实现这个clock()系统调用,它返回这个低频率计时器滴答的数量。 这就是为什么你只能使用clock()以1ms的粒度进行测量。