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


看了一個叫 doug hellmann 的哥們兒寫的博文 html

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

實驗代碼 windows


$ 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 要把單引號換成雙引號 ,結果同樣。 python2.7

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 oop


緣由大概也能猜到,函數要進出棧操做,而{} 有直接對應的指令: spa

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

code

{} orm

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

這下就瞭然了。 htm


原文:

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

相關文章
相關標籤/搜索