基准测试 - CPU时间大于待机时间?

maz*_*zix 2 c benchmarking microbenchmark

我在linux上测量排序算法的cpu时间和挂起时间.我getrusage用来测量cpu时间并clock_gettime CLOCK_MONOTONIC获得一个待机时间.虽然我注意到cpu时间比壁时间大 - 这是正确的吗?我一直认为cpu时间必须小于壁时间.我的例子结果:

3.000187 seconds  [CPU]
3.000001 seconds  [WALL]
Run Code Online (Sandbox Code Playgroud)

Eri*_*hil 8

如果计算需要两秒的处理器时间,那么两个处理器可以(理想地)在一秒内完成它.因此,双处理器系统对于每个挂钟时钟具有两个CPU秒.即使您没有在流程中明确使用多线程,您使用的库或操作系统也可能使用多个处理器来为您的流程执行工作.

此外,一些会计是近似的.系统可能会以某个小单位跟踪处理器时间,例如以参数为目的的微秒,并在进程收到至少半微秒的处理器时间的任何时候向进程充电一微秒.(这应该是所有回答浮点问题的人的教训,建议使用整数运算来避免舍入错误.所有离散算术都可能有舍入错误.)