Python 优化 - 调用迭代函数会显着降低我的程序速度吗?
Python Optimization - Will calling functions for iteration slow my program significantly?
比较这两个代码库:
# Call this A.
def main():
for a in list:
foo(a)
def foo(something):
<perform lots of operations on something and return a result>
VS
# Call this B
def main():
for a in list:
<perform lots of operations on a and return a result>
A 比 B 慢多少?显然 A 有函数开销,但是在编写代码时是否值得考虑这一点?我问这个是因为我目前在 A 版本中通过程序实现,基本上每次迭代都会调用一个函数。我宁愿这样做,因为 "" 非常复杂和深入,因此将它放在 for 循环中非常混乱。更不用说我以后无法将代码重用于其他迭代...
你应该更喜欢readability/maintainability/unittestability。仅当绝对需要额外的性能时,才应内联该函数。
鉴于 "<perform lots of operations on something..."
,foo
的额外开销可能可以忽略不计
除非您的 'lots of operations' 发生得非常快,否则额外函数调用的费用可以忽略不计。
写的时候多注意big-O的渐近效率;不要试图优化不明显的事情。然后,如果您的程序很慢,分析它 并解决最大的瓶颈。没有事先分析的优化是徒劳的。
比较这两个代码库:
# Call this A.
def main():
for a in list:
foo(a)
def foo(something):
<perform lots of operations on something and return a result>
VS
# Call this B
def main():
for a in list:
<perform lots of operations on a and return a result>
A 比 B 慢多少?显然 A 有函数开销,但是在编写代码时是否值得考虑这一点?我问这个是因为我目前在 A 版本中通过程序实现,基本上每次迭代都会调用一个函数。我宁愿这样做,因为 "" 非常复杂和深入,因此将它放在 for 循环中非常混乱。更不用说我以后无法将代码重用于其他迭代...
你应该更喜欢readability/maintainability/unittestability。仅当绝对需要额外的性能时,才应内联该函数。
鉴于 "<perform lots of operations on something..."
foo
的额外开销可能可以忽略不计
除非您的 'lots of operations' 发生得非常快,否则额外函数调用的费用可以忽略不计。
写的时候多注意big-O的渐近效率;不要试图优化不明显的事情。然后,如果您的程序很慢,分析它 并解决最大的瓶颈。没有事先分析的优化是徒劳的。