【推荐】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.1911000000 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
这下就了然了。
原文:
来源:oschina
链接:https://my.oschina.net/u/180901/blog/89683