Функция python: slow timeit()
Когда я запускаю код ниже за пределами timeit(), он, кажется, завершается мгновенно. Однако, когда я запускаю его в функции timeit(), это занимает гораздо больше времени. Почему?
>>> import timeit
>>> t = timeit.Timer("3**4**5")
>>> t.timeit()
16.55522028637718
Использование:
Python 3.1 (x86) -
AMD Athlon 64 X2 -
WinXP (32 бит)
Ответы
Ответ 1
Функция timeit()
запускает код много раз (по умолчанию один миллион) и занимает среднее значение таймингов.
Чтобы запустить код только один раз, сделайте следующее:
t.timeit(1)
но это даст вам перекошенные результаты - это повторяется по уважительной причине.
Чтобы получить время цикла, позволяющее повторять его, разделите результат на число циклов. Используйте меньшее значение для количества повторов, если одного миллиона слишком много:
count = 1000
print t.timeit(count) / count
Ответ 2
Потому что timeit по умолчанию запускает его миллион раз. Дело в том, чтобы делать микро-тесты, и единственный способ получить точные тайминги коротких событий - повторять их много раз.
Ответ 3
Согласно docs, Timer.timeit() запускает ваш код по миллиону раз по умолчанию. Используйте параметр "число", чтобы изменить это значение по умолчанию:
t.timeit(number=100)
например.
Ответ 4
Timeit работает по умолчанию по миллиону циклов.
У вас также могут быть проблемы с операциями: (3**4)**5 != 3**4**5
.