2014-10-10 71 views
21

为什么Python字典构造函数比使用文字语法慢?为什么dict文字语法首选dict构造函数?

我的同事热议之后,我做了一些比较,得到了以下数据:

python2.7 -m timeit "d = dict(x=1, y=2, z=3)" 
1000000 loops, best of 3: 0.47 usec per loop 

python2.7 -m timeit "d = {'x': 1, 'y': 2, 'z': 3}" 
10000000 loops, best of 3: 0.162 usec per loop 

什么是构造函数是比较慢的原因是什么?在什么情况下,如果有的话,会更快吗?

+4

通常这与'dict'可能指向别的事实有关。所以解释者不能做任何真正的优化。使用'{}'语法,可以进行这些优化。 – 2014-10-10 23:10:56

+7

即:'dict'总是一个真正的函数调用,而'{}'是在编译时处理的。 – Eevee 2014-10-10 23:11:48

+3

[d = dict()“和”d = {}“]之间的差异可能重复(http://stackoverflow.com/questions/2745008/differences-between-d-dict-and-d) – 2014-10-11 00:08:02

回答

28

构造函数速度较慢,因为它通过调用dict()函数创建对象,而编译器将字典文字转换为BUILD_MAP字节码,保存函数调用。

相关问题