2015-12-28 13 views
6

Non vedo il motivo per cui il modulo timeit di python misura l'ora utilizzando lo best of 3. Ecco un esempio dalla mia console:Perché python's timeit usa il "meglio di 3" per misurare il tempo trascorso?

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

Intuitivamente, avrei messo tutto il tempo insieme poi dividerlo per il numero di cicli. Qual è l'intuizione di raccogliere il meglio di 3 tra tutti i loop? Sembra un po 'ingiusto.

+2

Ci sono processi di cpu casuali che rallentano la velocità. In teoria, dovrebbe richiedere lo stesso tempo di esecuzione, quindi sceglie il più veloce possibile. – Untitled123

+0

Perché questo downgrade? – zell

+0

non ero io:) ... – Untitled123

risposta

5

Come osservato in the documentation:

default_timer() measurations possono essere influenzati da altri programmi in esecuzione sulla stessa macchina, quindi la cosa migliore da fare quando tempistica accurata è necessario è quello di ripetere i tempi un paio di volte e usa il momento migliore L'opzione -r è buona per questo; il valore predefinito di 3 ripetizioni è probabilmente sufficiente nella maggior parte dei casi.

Problemi correlati