Czasami lubię określać czas działania fragmentów kodu. Sprawdziłem wiele witryn internetowych i widziałem na ogół dwa główne sposoby, aby to zrobić. Jeden używa time.time
, a drugi używa timeit.timeit
.time.time vs. timeit.timeit
Więc napisałem bardzo prosty skrypt aby porównać dwa:
from timeit import timeit
from time import time
start = time()
for i in range(100): print('ABC')
print(time()-start, timeit("for i in range(100): print('ABC')", number=1))
Zasadniczo razy, ile czasu potrzeba, aby wydrukować „ABC” 100 razy w pętli for. Liczba po lewej stronie znajduje się wyniki dla time.time
a liczba po prawej stronie jest dla timeit.timeit
:
# First run
0.0 0.012654680972022981
# Second run
0.031000137329101562 0.012747430190149865
# Another run
0.0 0.011262325239660349
# Another run
0.016000032424926758 0.012740166697164025
# Another run
0.016000032424926758 0.0440628627381413
Jak widać, czasami time.time jest szybsza, a czasami jest to wolniej. Który jest lepszy sposób (dokładniejszy)?
'timeit' jest lepszym wyborem do rozrządu fragmentów kodu. Używa 'time.time()' ('time.clock()' dla Windows) i wyłącza garbage collector. Również jedna próba nie jest wystarczająca. – Blender
@Blender: 'timeit' używa' time.perf_counter' w Pythonie 3.3+ – jfs
@ J.F.Sebastian: Dzięki, nie wiedziałem o tym. – Blender