Недавно я сравнил скорость обработки []
и list()
и с удивлением обнаружил, что []
работает более чем в три раза быстрее, чем list()
. Я провел те же тесты с {}
и dict()
, и результаты были практически идентичными: []
и {}
оба заняли около 0,128 сек/миллион циклов, а list()
и dict()
заняли примерно 0,488 секунды/миллион каждый цикл.
Почему это? Делайте []
и {}
(и, возможно, ()
и ''
), немедленно передавайте копии некоторого пустого литерала, в то время как их явно названные экземпляры (list()
, dict()
, tuple()
, str()
) полностью идет о создании объекта, действительно ли у них есть элементы?
Я не знаю, как эти два метода отличаются, но я хотел бы узнать. Я не мог найти ответ в документах или на SO, и поиск пустых скобок оказался более проблематичным, чем я ожидал.
Я получил результаты синхронизации, вызвав timeit.timeit("[]")
и timeit.timeit("list()")
, и timeit.timeit("{}")
и timeit.timeit("dict()")
, чтобы сравнить списки и словари соответственно. Я запускаю Python 2.7.9.
Недавно я обнаружил, что "Почему это правда медленнее, чем если 1?", который сравнивает производительность if True
с if 1
и, похоже, затрагивает аналогичные литеральный или глобальный сценарий; возможно, это стоит рассмотреть также.