Метка: performance

Что быстрее? dict() или {}

Разработчики предпочитают разные способы создания пустого словаря. Но равнозначны ли они?

Оказывается, что нет. Они приводят к генерации разного байт-кода. Убедимся в этом с помощью модуля dis:

 >>> import dis
 >>> dis.dis('{}')
   1           0 BUILD_MAP                0
               2 RETURN_VALUE
 >>> dis.dis('dict()')
   1           0 LOAD_NAME                0 (dict)
               2 CALL_FUNCTION            0
               4 RETURN_VALUE 

В одном случае непосредственно используется одна команда BUILD_MAP для создания словаря, а в другом случае идет вызов функции dict, который где-то внутри себя делает BUILD_MAP.

Очевидно, это сказывается и на времени выполнения кода:

>>> from timeit import timeit
>>> timeit('{}')
0.03544308300479315
>>> timeit('dict()')
0.08697152900276706

Вывод: dict() – работает значительно медленнее. Не призываем переписывать старый код, просто на заметку.

🧙 Специально для канала @pyway. Подписывайтесь на мой канал в Телеграм @pyway 👈