Функция 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.