Подтвердить что ты не робот

Почему синтаксис dict literal предпочтительнее над конструктором dict?

Почему конструктор dict на Python медленнее, чем использование синтаксиса literal?

После горячих дебатов с моим коллегой я сделал некоторое сравнение и получил следующую статистику:

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

В чем причина конструктора медленнее? И в каких ситуациях, если они есть, было бы быстрее?

4b9b3361

Ответ 1

Конструктор медленнее, потому что он создает объект, вызывая функцию dict(), тогда как компилятор превращает литерал dict в BUILD_MAP bytecode, сохраняя функцию звоните.