转自 stackoverflow
http://stackoverflow.com/questions/11241523/why-does-python-code-run-faster-in-a-function
为什么同样的代码在函数中就要比不在函数中快?
def main():
for i in xrange(10**8):
pass
main()
real 0m1.841s
user 0m1.828s
sys 0m0.012s
for i in xrange(10**8):
pass
real 0m4.543s
user 0m4.524s
sys 0m0.012s
原因是这样的:
i在函数中是局部变量,使用STORE_FAST指令, i不在函数中为全局变量使用STORE_NAME指令
而 STORE_FAST要比STORE_NAME快。
可使用 dis模块查看字节码:
import dis
def a():
pass
dis.dis(a)
2 0 LOAD_CONST 0 (None)
3 RETURN_VALUE
为什么 局部变量比全局变量快?
局部变量编译后被存为固定大小的数组, 而全局变量是个字典。