Was ist in Python in Bezug auf Speichernutzung und CPU-Verbrauch effizienter - Wörterbuch oder Objekt?
Hintergrund: Ich muss eine große Datenmenge in Python laden. Ich habe ein Objekt erstellt, das nur ein Feldcontainer ist. Das Erstellen von 4M-Instanzen und das Einfügen in ein Wörterbuch dauerte etwa 10 Minuten und ~ 6 GB Speicher. Nachdem das Wörterbuch fertig ist, ist der Zugriff darauf ein Wimpernschlag.
Beispiel: Um die Leistung zu überprüfen, habe ich zwei einfache Programme geschrieben, die dasselbe tun - eines verwendet Objekte, das andere Wörterbuch:
Objekt (Ausführungszeit ~ 18sec):
class Obj(object):
def __init__(self, i):
self.i = i
self.l = []
all = {}
for i in range(1000000):
all[i] = Obj(i)
Wörterbuch (Ausführungszeit ~ 12sec):
all = {}
for i in range(1000000):
o = {}
o['i'] = i
o['l'] = []
all[i] = o
Frage: Mache ich etwas falsch oder ist das Wörterbuch nur schneller als das Objekt? Wenn das Wörterbuch tatsächlich eine bessere Leistung erbringt, kann jemand erklären, warum?