ich habe ein Test zwischen den beiden gängigen Verfahren in einigen Code von mir, das feststellt, wie viele Graphen auf n Ecken gibt es , um zu sehen, welche Methode zum Zählen von Elementen einer generierten Liste schneller ist. Sage hat einen Generatorgraphen (n), der alle Graphen auf n Knoten erzeugt. Ich habe zwei Funktionen erstellt, die die Länge einer Liste erhalten, die von einem Iterator auf zwei verschiedene Arten erhalten wurde, und die jeweils mit der Funktion time.time() gemittelt wurden (durchschnittlich über 100 Testläufe). Die Funktionen sind wie folgt:
def test_code_list(n):
l = graphs(n)
return len(list(l))
und
def test_code_sum(n):
S = sum(1 for _ in graphs(n))
return S
Nun, wenn ich jede Methode
import time
t0 = time.time()
for i in range(100):
test_code_list(5)
t1 = time.time()
avg_time = (t1-t0)/10
print 'average list method time = %s' % avg_time
t0 = time.time()
for i in range(100):
test_code_sum(5)
t1 = time.time()
avg_time = (t1-t0)/100
print "average sum method time = %s" % avg_time
Durchschnitt Liste Methode Zeit = 0,0391882109642
durchschnittliche Summe Methode Zeit = ,0418473792076
Um die Anzahl der Graphen auf n = 5 Ecken zu berechnen, ist die Listenmethode etwas schneller (obwohl 100 Testläufe keine große Stichprobengröße sind). Aber wenn ich die Länge der Liste erhöht durch Graphen auf n = 7 Ecken (dh Ändern Graphen (5) auf Graphen (7)) versucht, berechnet wird, war das Ergebnis folgendermaßen aus:
Durchschnitt Liste Methode Zeit = 4,14753051996
durchschnittliche Summe Methode Zeit = 3.96504004002
In diesem Fall war die Summenmethode etwas schneller. Alles in allem sind die beiden Methoden ungefähr die gleiche Geschwindigkeit, aber der Unterschied könnte von der Länge Ihrer Liste abhängen (es könnte auch sein, dass ich nur über 100 Testläufe gemittelt habe, was nicht sehr hoch ist - hätte ewig gedauert Andernfalls).
um die Anzahl der Zeilen zu zählen, wird die Datei trotzdem in den Speicher geladen! – hasen
Listen (alle Sequenztypen) sind ebenfalls iterierbar.was meinst du ist "iterator" – hop
@hasen: ja, aber nicht alle auf einmal. – Claudiu