2012-03-03 107 views
1

如果我有一个函数Python:多次使用相同的参数调用相同的函数,或将结果保存为中间值?

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 

之间的性能差异,如果翻译已经像优化的情况下,我不知道这个?

+0

可能的重复[是否Python优化函数调用循环?](http://stackoverflow.com/questions/7243444/does-python-optimize-function-calls-from-loops) – delnan 2012-03-03 14:49:21

+1

另请注意,在命令式编程语言,多次调用具有相同参数的函数可能会有完全不同的效果。证明某些这样的调用可以省略,可能需要大量的程序间分析,并且内联它们需要早期绑定(Python中不存在*)和优化编译器或JIT编译器。 – delnan 2012-03-03 14:51:39

回答

5

CPython编译器只做很少的简单的peephole optimisations,但它肯定永远不会优化掉一个函数调用 - 它如何知道函数是否有副作用?在编译时,它通常不知道名称bar引用哪个函数,并且名称绑定可能随时发生更改。

如果有疑问,只需自己测量性能 - timeit模块是您的朋友。

相关问题