2

我遇到了一个问题,它说Python 代码在函数中运行得更快。所以我认为将代码分解为尽可能多的部分将是更快的方法。但是在计时某些功能时,我发现它并不正确。

我不会在这里发布代码,因为它目前放在 codereview 以供审查。我仍在寻找进行计时的最佳方法,因为该代码也被放在 codereview 进行审查,尽管有赏金,但我没有得到很多答案。

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

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

4

2 回答 2

2

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

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

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

您提供的第一个链接的页面上有很多信息可以证实这一点。

于 2013-07-20T18:16:46.177 回答
1

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

于 2013-07-20T16:49:05.453 回答