我正在测量算法的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时间不同呢?
答案 0 :(得分:2)
除非您在没有操作系统的微控制器上运行,否则后台会发生很多会影响CPU时序的事情。