如果我有一个函数
def bar(n):
return n**100
之间会有性能差异吗?
for i in range(1000000):
x = bar(30)
# use x for something
和
x = bar(30)
# use x for something 1,000,000 times
不知道解释器有没有针对这种情况优化过?
最佳答案
CPython 编译器只做很少的简单 peephole optimisations ,但它肯定永远不会优化函数调用——它怎么知道函数是否有副作用呢?在编译时,它通常甚至不知道名称 bar
指的是哪个函数,并且名称绑定(bind)可能随时更改。
如有疑问,只需自己测量性能 -- timeit
模块是你的 friend 。
关于Python:使用相同的参数多次调用同一个函数,还是将结果保存为中间值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9547007/