Perfomance: list[index] vs. dict[index]

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
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Was ist eigentlich schelle ein index zugriff auf eine Liste, oder ein dictionary wobei die Keys dann eine einfache Zahlenreihe ist?

Bringt der hashtable beim dictionary auch Vorteile, obwohl man eh immer über den Index geht?

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
BlackJack

@jens: Kann man das nicht schneller ausprobieren als die Frage hier zu stellen? ;-)
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Zumindest mit diesem Test ist eine Liste schneller:

Code: Alles auswählen

import timeit

COUNT = 2000

print timeit.timeit(
    'for i in xrange(32*1024):mem[i]',
    setup='mem=[0x00] * (32*1024)',
    number=COUNT
)
print timeit.timeit(
    'for i in xrange(32*1024):mem[i]',
    setup='mem=dict([(i,0x00) for i in xrange(32*1024)])',
    number=COUNT
)

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

jens hat geschrieben:Bringt der hashtable beim dictionary auch Vorteile, obwohl man eh immer über den Index geht?
Ist das Hashen des Keys in einen Index und dann der Sprung an einen Index (wobei eventuell mit Kollisionen umgegangen werden muss) schneller als ein Sprung an einen Offset im Speicher? Ziemlich sicher nicht. Wobei ich an dieser Stelle sagen muss, dass ich nicht weiß wie Python mit Kollisionen im Dict umgeht, aber das kann man in dictobject.c nachsehen.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Antworten