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