Почему python timeit использует «лучшее из 3» для измерения прошедшего времени?

Я не вижу причин, по которым модуль timeit Python измеряет время, используя функцию best of 3. Вот пример из моей консоли:

~ python -m timeit 'sum(range(10000))'
10000 loops, best of 3: 119 usec per loop

Интуитивно я бы сложил все время вместе, а затем разделил его на количество циклов. Какова интуиция выбора лучшего из 3 среди всех циклов? Это кажется немного несправедливым.


person zell    schedule 28.12.2015    source источник
comment
Есть случайные процессы процессора, которые замедляют скорость. Теоретически каждый запуск должен занимать одинаковое количество времени, поэтому он выбирает самое быстрое из возможных.   -  person Untitled123    schedule 28.12.2015
comment
Почему это минус?   -  person zell    schedule 29.12.2015


Ответы (1)


Как указано в документации:

На измерения default_timer() могут влиять другие программы, работающие на том же компьютере, поэтому лучшее, что можно сделать, когда требуется точное время, — это повторить измерение времени несколько раз и использовать лучшее время. Для этого подходит опция -r; 3 повторения по умолчанию, вероятно, достаточно в большинстве случаев.

person Simeon Visser    schedule 28.12.2015