为什么程序永远不会在同一时间执行?

时间:2019-02-03 13:42:41

标签: performance runtime

这更多是一个通用的技术问题。我只是想知道决定计算机程序运行速度有多快的主要因素是什么?

例如,当我为Python代码计时时,运行时间总是至少相差+/- 0.02秒

1 个答案:

答案 0 :(得分:1)

执行时间差异的原因很多。对于运行数秒的python脚本,大约200ms的变化似乎是合理的。这里的主要贡献者将是OS /调度程序和内存/缓存。操作系统将在正在运行脚本的内核上提供中断,并在阻止系统调用时运行调度程序,该调度程序将在该内核上运行后台任务。这些任务运行时,它们将污染L1,L2和L3缓存,以便该python脚本的部分数据和代码将被逐出到RAM。因此,内存引用每次运行总是会花费不同的时间,因为您永远无法重现中断脚本的后台任务的内存占用。

如果您正在Linux上运行,则可以尝试使用isolcpu = kernel boot选项将脚本调度到已从调度程序脱机的CPU,这样可以减少来自其他进程的噪音。这样,您的变化将减少几个数量级,但是使用共享资源仍然会带来一些麻烦-内存控制器,IO总线,共享的最后一级缓存。