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

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

 

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

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

 

转载于:https://my.oschina.net/u/180901/blog/65178

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值