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的渐近效率;不要试图优化不明显的事情。然后,如果您的程序很慢,分析它 并解决最大的瓶颈。没有事先分析的优化是徒劳的。