摘抄 python dict() 比 {} 慢6倍左右


看了一个叫 doug hellmann 的哥们儿写的博文

在python2.7中  dict() 函数方式生成字典比直接{}要慢6倍。

实验代码


$ python2.7 -m timeit -n 1000000 -r 5 -v 'dict()'
raw times: 0.24 0.24 0.24 0.239 0.24
1000000 loops, best of 5: 0.239 usec per loop

$ python2.7 -m timeit -n 1000000 -r 5 -v '{}'
raw times: 0.0417 0.0413 0.0407 0.0411 0.042
1000000 loops, best of 5: 0.0407 usec per loop

我在自己机器上试了下,由于是windows 要把单引号换成双引号 ,结果一样。

C:\Users\xxxx>python -m timeit -n 1000000 -r 5 -v "dict()"

raw times: 0.195 0.194 0.193 0.191 0.191
1000000 loops, best of 5: 0.191 usec per loop


C:\Users\xxxx>python -m timeit -n 1000000 -r 5 -v "{}"
raw times: 0.0455 0.0468 0.0463 0.0462 0.0466

1000000 loops, best of 5: 0.0455 usec per loop


原因大概也能猜到,函数要进出栈操作,而{} 有直接对应的指令:

dict()


$ python2.7 -m dis func.py
  1           0 LOAD_NAME                0 (dict)
              3 CALL_FUNCTION            0
              6 POP_TOP
              7 LOAD_CONST               0 (None)
             10 RETURN_VALUE

{}

python2.7 -m dis literal.py
  1           0 BUILD_MAP                0
              3 POP_TOP
              4 LOAD_CONST               0 (None)
              7 RETURN_VALUE

这下就了然了。


原文:

http://www.doughellmann.com/articles/misc/dict-performance/index.html?utm_source=Python+Weekly+Newsletter&utm_campaign=327c79cf35-Python_Weekly_Issue_61_November_15_2012&utm_medium=email

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

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值