Я столкнулся с этим странным поведением и не смог его объяснить. Это контрольные показатели:
py -3 -m timeit "tuple(range(2000)) == tuple(range(2000))"
10000 loops, best of 3: 97.7 usec per loop
py -3 -m timeit "a = tuple(range(2000)); b = tuple(range(2000)); a==b"
10000 loops, best of 3: 70.7 usec per loop
Как получается сравнение с назначением переменной быстрее, чем использование одного лайнера с временными переменными более чем на 27%?
В документах Python сбор мусора отключается во время timeit, поэтому это не может быть. Это какая-то оптимизация?
Результаты также могут быть воспроизведены в Python 2.x, но в меньшей степени.
Запуск Windows 7, CPython 3.5.1, Intel i7 3.40 ГГц, 64 бит и ОС, и Python. Похоже на другую машину, которую я пробовал работать на Intel i7 3.60 ГГц, при этом Python 3.5.0 не воспроизводит результаты.
Выполняется с использованием того же процесса Python с циклами timeit.timeit()
@10000, производимыми соответственно 0,703 и 0,804. Пока еще показывает, что в меньшей степени. (~ 12,5%)