在Python中使用局部变量而不是全局变量所获得的性能优势的极限?

在Python中使用局部变量而不是全局变量所获得的性能优势的极限?,python,performance,micro-optimization,Python,Performance,Micro Optimization,我遇到一个这样的问题。所以我认为将代码分解成尽可能多的部分将是更快的方法。但是当我对一些函数进行计时时,我发现它实际上并不正确 我不会在这里发布代码。我仍然在寻找最佳的时间安排方式,尽管得到了赏金,但我并没有得到很多答案 我发现性能优势不可能是无限的,必须有一个极限,在这个极限下,分解函数将停止提供性能优势 那么,通过将Python代码分解为各种函数,性能优势停止的极限是什么呢?从性能的角度来看,什么时候将代码分解成函数不再有用了?据我所知,性能提升只适用于全局变量移动到函数的局部范围时,因为这

我遇到一个这样的问题。所以我认为将代码分解成尽可能多的部分将是更快的方法。但是当我对一些函数进行计时时,我发现它实际上并不正确

我不会在这里发布代码。我仍然在寻找最佳的时间安排方式,尽管得到了赏金,但我并没有得到很多答案

我发现性能优势不可能是无限的,必须有一个极限,在这个极限下,分解函数将停止提供性能优势


那么,通过将Python代码分解为各种函数,性能优势停止的极限是什么呢?从性能的角度来看,什么时候将代码分解成函数不再有用了?

据我所知,性能提升只适用于全局变量移动到函数的局部范围时,因为这样可以缩短它们的访问时间。进一步将代码分解为更多函数不会提供任何类似的提升

确实,由于访问时间的原因,代码在函数中的运行速度比在全局范围中的运行速度快。函数有自己的局部作用域,它被实现为数组,而全局作用域实际上只是一个字典。数组的访问速度比DICT快,这是在C级别的引擎盖下发生的

这并不意味着将代码分解为多个函数将使其更快,它只意味着将代码从全局移动到函数内部将提高访问时间,这可能会导致整体速度的提高

即使只是为了使用局部作用域而不是全局作用域而将所有代码塞进一个函数中,也不能保证性能的提高,这只能通过实际分析代码来确定。这是因为在Python中,函数调用的开销相对较高,这可能会使更快的本地访问时间带来的性能增益相形见绌

你提供的页面上有很多信息证实了这一点