2015-12-28 15 views
6

Ich sehe nicht die Begründung, warum Python Timeiti Modul misst die Zeit mit der best of 3. Hier ist ein Beispiel aus meiner Konsole:Warum verwendet Python's timeit das 'Best of 3', um die verstrichene Zeit zu messen?

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

Intuitiv würde ich die ganze Zeit gestellt haben zusammen dann teilen sie durch die Anzahl der Schleifen. Was ist die Intuition, das Beste von 3 unter allen Loops zu sammeln? Es scheint nur ein bisschen unfair.

+2

Es gibt zufällige CPU-Prozesse, die die Geschwindigkeit verlangsamen. Theoretisch sollte es jeden Durchlauf dieselbe Zeit dauern, also wählt es das schnellste, was es tun kann. – Untitled123

+0

Warum ist das negativ? – zell

+0

war ich nicht:) ... – Untitled123

Antwort

5

Wie in the documentation bemerkt:

DEFAULT_TIMER() measurations kann auf derselben Maschine von anderen Programmen betroffen laufen, so das Beste, was zu tun ist, wenn ein genaues Timing erforderlich ist, ist das Timing ein paar Mal zu wiederholen und nutze die beste Zeit. Die Option -r ist dafür gut; der Standardwert von 3 Wiederholungen ist wahrscheinlich in den meisten Fällen ausreichend.