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

你说的曾经没有我的故事 提交于 2019-12-12 22:16:08

【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>>


看了一个叫 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

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!