Ich habe getestet, ob es einen Geschwindigkeitsunterschied zwischen zwei Arten des for loops über eine Liste von tuples gibt:
liste_von_tuples = [(1, 2), (3, 4), (5, 6)]
Es gibt 100.000 tuple, und jeder tuple enthält 2 Zufallszahlen.
Art 1:
for i in liste_von_tuples: res.append(i[1])
Art 2:
for i, j in liste_von_tuples: res.append(j)
Ich hatte erwartet, dass die zweite Art schneller ist, da bei Art 1 eine Zuweisungsoperation von zwei Werten und danach eine Auswahloperation und eine Zuweisungsoperation nötig sind, während bei Art 2 die Auswahloperation wegfällt.
Der Test bestätigte meine Ansicht.
Art 1 braucht bei der Liste mit 100.000 Tuples von je 2 Zufallszahlen zwischen 4% und 12% länger.
Fazit: Bei for loops über tuple, sollte Art 2 verwendet werden:
for i, j in liste_von_tuples: res.append(j)
Die verwendete und ausführlich kommentierte Testdatei ist angehängt.
Anmerkung: Meine Python Tests können jetzt auch mit Mercurial heruntergeladen werden: http://bitbucket.org/ArneBab/python_tests/ [1]
Ideen und Patches wären cool :)
Anhang | Größe |
---|---|
for-loops-geschwindigkeitstest.py [2] | 5.57 KB |
Links:
[1] http://bitbucket.org/ArneBab/python_tests/
[2] https://www.draketo.de/files/for-loops-geschwindigkeitstest.py_2.txt