Geschwindigkeiten von Sequenzen bzw. Listen

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
droptix
User
Beiträge: 521
Registriert: Donnerstag 13. Oktober 2005, 21:27

Sequenzen arbeiten intern doch mit Hash-Werten. Somit dauert ein Vergleich, ob sich ein Element in einer Liste befindet, immer gleich lange, weil lediglich Hashes verglichen werden.

Fragen:

1) Ein Hash-Wert muss ja auch erstmal angelegt werden. Ich nehme an das passiert beim `alist.append(x)`, richtig?

2) Wenn ich nun sehr große Datenmengen in Listen ablege, gilt dann die Faustregel: Je größer der Inhalt, desto länger dauert die Hash-Wert-Berechnung und damit auch der append-Vorgang selbst.

3) Was für ein Hash-Wert wird eigentlich gebildet und wie lange dauert das?

Grund der Fragen: Mir ist zu Ohren gekommen dass das Arbeiten mit Listen sehr langsam werden soll. Bei größeren Datenmengen wie Datenbankergebnissen soll das wohl manchmal nervig sein.
Benutzeravatar
veers
User
Beiträge: 1219
Registriert: Mittwoch 28. Februar 2007, 20:01
Wohnort: Zürich (CH)
Kontaktdaten:

Ich glaube du Verwechselst Sequenzen mit Dictionaries Oo

Code: Alles auswählen

[veers@castle lanshark]$ python -m timeit -s "x = range(1024)" "1024 in x"
10000 loops, best of 3: 46.2 usec per loop

[veers@castle lanshark]$ python -m timeit -s "x = range(10240)" "10240 in x"
1000 loops, best of 3: 456 usec per loop

[veers@castle lanshark]$ python -m timeit -s "x = range(10240)" "1 in x"
10000000 loops, best of 3: 0.151 usec per loop
Das sieht doch sehr Linear aus ;)
EyDu
User
Beiträge: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

droptix hat geschrieben:Sequenzen arbeiten intern doch mit Hash-Werten.
Nein.

Ich empfehle dir zu diesem Thema mal diesen Link, und dieses Buch.

Dann musst du dich nicht mehr darauf verlassen, was dir irgend jemand mal erzählt hat :-)
Antworten