Wie verwende ich timeit
um die Leistung meiner eigenen Funktionen wie " insertion_sort
" und " tim_sort
"?
Antworten
Zu viele Anzeigen?#
def gen_prime(x):
multiples = []
results = []
for i in range(2, x+1):
if i not in multiples:
results.append(i)
for j in range(i*i, x+1, i):
multiples.append(j)
return results
import timeit
#
start_time = timeit.default_timer()
gen_prime(3000)
print(timeit.default_timer() - start_time)
# start_time = timeit.default_timer()
# gen_prime(1001)
# print(timeit.default_timer() - start_time)
Übergeben Sie einfach Ihren gesamten Code als Argument von timeit:
import timeit
print(timeit.timeit(
"""
limit = 10000
prime_list = [i for i in range(2, limit+1)]
for prime in prime_list:
for elem in range(prime*2, max(prime_list)+1, prime):
if elem in prime_list:
prime_list.remove(elem)
"""
, number=10))
Lassen Sie uns das gleiche Wörterbuch in jedem der folgenden Bereiche einrichten und die Ausführungszeit testen.
Das Argument setup dient im Wesentlichen der Einrichtung des Wörterbuchs
Zahl ist, den Code 1000000 Mal auszuführen. Nicht das Setup, sondern die Anweisung
Wenn Sie dies ausführen, können Sie sehen, dass index viel schneller ist als get. Sie können es mehrere Male ausführen, um zu sehen.
Der Code versucht im Wesentlichen, den Wert von c im Wörterbuch abzurufen.
import timeit
print('Getting value of C by index:', timeit.timeit(stmt="mydict['c']", setup="mydict={'a':5, 'b':6, 'c':7}", number=1000000))
print('Getting value of C by get:', timeit.timeit(stmt="mydict.get('c')", setup="mydict={'a':5, 'b':6, 'c':7}", number=1000000))
Hier sind meine Ergebnisse, Ihre werden abweichen.
nach Index: 0.20900007452246427
von get: 0.54841166886888