Недавно я сравнил скорость обработки [] и 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 и, похоже, затрагивает аналогичные литеральный или глобальный сценарий; возможно, это стоит рассмотреть также.