Разработчики предпочитают разные способы создания пустого словаря. Но равнозначны ли они?
Оказывается, что нет. Они приводят к генерации разного байт-кода. Убедимся в этом с помощью модуля 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 👈