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

2012/11/16 09:54
阅读数 441


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

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