为什么同一输入的CPU时间不恒定?

时间:2016-06-07 09:55:32

标签: c++ time cpu

我正在测量算法的CPU时间:

clock_gettime(CLOCK_PROCESS_CPUTIME_ID, &start);
loop 10000 times
    <My algorithms here>
clock_gettime(CLOCK_PROCESS_CPUTIME_ID, &end);
duration = (end.tv_sec - start.tv_sec) * 1000000000 + (end.tv_nsec - start.tv_nsec); // in nanoseconds

据我所知,CPU时间不依赖于I / O,缓存......,而只依赖于说明:

  

CPU时间(或处理时间)是中央处理单元(CPU)用于处理计算机程序或操作系统的指令的时间量,而不是例如等待输入/输出( I / O)操作或进入低功耗(空闲)模式。 (维基百科)

对于不同的运行,我使用相同的输入,并且算法是确定性的,因此指令应该是相同的。那么为什么不同运行的CPU时间不同呢?

1 个答案:

答案 0 :(得分:2)

除非您在没有操作系统的微控制器上运行,否则后台会发生很多会影响CPU时序的事情。