【转】python为什么在函数中执行速度快

原创
2012/07/06 09:54
阅读数 200

转自 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

 

 为什么 局部变量比全局变量快?

局部变量编译后被存为固定大小的数组, 而全局变量是个字典。

 

展开阅读全文
打赏
0
0 收藏
分享
加载中
更多评论
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部