【问题标题】:Limit of performance benefit gained in Python from using local variables instead of global variables?使用局部变量而不是全局变量在 Python 中获得的性能优势有限?
【发布时间】:2013-07-20 16:10:13
【问题描述】:

我遇到了一个问题,上面写着Python code runs faster in functions。所以我认为将代码分解为尽可能多的部分将是更快的方法。但是在对一些函数进行计时时,我发现它并不完全正确。

我不会在这里将代码发布为it is currently placed for review at codereview。我仍在寻找最好的计时方法,就像code is also placed for review at codereview 一样,尽管有赏金,但我没有得到很多答案。

我发现性能优势不可能是无限的,并且必须有一个限制,即分解功能会停止提供性能优势。

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

【问题讨论】:

    标签: python performance micro-optimization


    【解决方案1】:

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

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

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

    您提供的first link 页面上有很多信息证实了这一点。

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 2023-03-22
        • 1970-01-01
        • 1970-01-01
        • 2012-09-17
        • 2013-08-04
        • 2019-07-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多