Почему [] быстрее, чем list()?Python

Программы на Python
Anonymous
 Почему [] быстрее, чем list()?

Сообщение Anonymous »

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

Подробнее здесь: https://stackoverflow.com/questions/302 ... -than-list

Вернуться в «Python»