Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Performance 为什么程序从不在完全相同的时间执行?_Performance_Runtime - Fatal编程技术网

Performance 为什么程序从不在完全相同的时间执行?

Performance 为什么程序从不在完全相同的时间执行?,performance,runtime,Performance,Runtime,这更像是一个一般性的技术问题。我只是好奇,决定计算机程序运行速度的主要因素是什么 例如,当我计时Python代码时,运行时总是至少变化+/-0.02秒执行时间变化的原因有很多。对于运行数秒的python脚本,大约200ms的变化似乎是合理的。这里的主要贡献者是操作系统/调度程序和内存/缓存。操作系统将在脚本正在运行的内核上提供中断服务,在阻止系统调用时,它将运行调度程序,调度程序将在该内核上运行后台任务。当这些任务运行时,它们会污染L1、L2和L3缓存,因此python脚本的部分数据和代码将被逐

这更像是一个一般性的技术问题。我只是好奇,决定计算机程序运行速度的主要因素是什么


例如,当我计时Python代码时,运行时总是至少变化+/-0.02秒

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

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