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