Ich war Benchmarking einige Python-Code bemerkte ich etwas seltsam. Ich habe die folgende Funktion zu messen, wie schnell es durch eine leere for-Schleife zu durchlaufen hat:Warum sind Pythons for-Schleifen für große Eingaben nichtlinear?
def f(n):
t1 = time.time()
for i in range(n):
pass
print(time.time() - t1)
f(10**6)
Prints 0.035
, f(10**7)
über 0.35
, f(10**8)
über 3.5
und f(10**9)
über 35
. Aber f(10**10)
? Weit über 2000
. Das ist sicherlich unerwartet. Warum sollte es mehr als 60 Mal so lange dauern, um 10 mal so viele Elemente zu durchlaufen? Was ist mit Pythons For-Schleifen, die das verursacht? Ist das Python-spezifisch, oder tritt das in vielen Sprachen auf?
Sie erstellen eine Liste, wenn Sie Python2 verwenden, Ihr Timing wäre auch besser mit dem Timeit-Modul –
von '10 ** 6' bis' 10 ** 9' gibt es einen großen Unterschied. _ Exponentielles Wachstum_ – levi
python2 oder python3? – fvannee