Seite 1 von 1

Geschwindigkeiten von Sequenzen bzw. Listen

Verfasst: Dienstag 17. Juli 2007, 17:27
von droptix
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.

Verfasst: Dienstag 17. Juli 2007, 18:03
von veers
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 ;)

Re: Geschwindigkeiten von Sequenzen bzw. Listen

Verfasst: Dienstag 17. Juli 2007, 18:05
von EyDu
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 :-)