Seite 1 von 1
Perfomance: list[index] vs. dict[index]
Verfasst: Sonntag 13. Juli 2014, 20:49
von jens
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?
Re: Perfomance: list[index] vs. dict[index]
Verfasst: Sonntag 13. Juli 2014, 20:51
von BlackJack
@jens: Kann man das nicht schneller ausprobieren als die Frage hier zu stellen?

Re: Perfomance: list[index] vs. dict[index]
Verfasst: Sonntag 13. Juli 2014, 20:55
von jens
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
)
Re: Perfomance: list[index] vs. dict[index]
Verfasst: Sonntag 13. Juli 2014, 23:58
von Leonidas
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.