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.