web-dev-qa-db-fra.com

Pourquoi la syntaxe littérale du dict est-elle préférée au constructeur du dict?

Pourquoi le constructeur Python dict est-il plus lent que la syntaxe littérale utilisant?

Après un débat animé avec mon collègue, j'ai fait une comparaison et obtenu les statistiques suivantes:

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

Quelle est la raison pour laquelle le constructeur est plus lent? Et dans quelles situations, le cas échéant, serait-ce plus rapide?

26
Fabz

Le constructeur est plus lent car il crée l'objet en appelant la fonction dict(), tandis que le compilateur transforme le littéral dict en BUILD_MAP bytecode, sauvegarde de l'appel de fonction.

31