fondness
2013-01-13, 13:39:22
Hallo, vielleicht weiß ja jemand eine Antwort:
Und zwar beobachte ich schon länger das eine std::list mehr Speicher benötigt als es die Theorie sagt, deshalb habe ich das jetzt mal genauer untersucht:
Und zwar benötigt einen std::list<int> mit 500mio Elementen bei mir fast ~15Gib RAM. Kompiliert wurde die x64 release Version.
Eigentlich sollten es pro Element zwei 8 Byte Pointer und ein 4 Byte int-Wert sein. Macht also 20 Byte pro Element. Mal die 500mio Elementen wäre ich bei 10GB. Wo kommen die zusätzlichen 50% her? Eine Antwort darauf ist das aligment, das bei Visual Studio 2010 laut meinen Recherchen bei 8 Byte liegt. Dann wären wir bei 24Byte pro Element, das erklärt aber noch immer nicht vollständig den hohen Speicherverbauch.
Und zwar beobachte ich schon länger das eine std::list mehr Speicher benötigt als es die Theorie sagt, deshalb habe ich das jetzt mal genauer untersucht:
Und zwar benötigt einen std::list<int> mit 500mio Elementen bei mir fast ~15Gib RAM. Kompiliert wurde die x64 release Version.
Eigentlich sollten es pro Element zwei 8 Byte Pointer und ein 4 Byte int-Wert sein. Macht also 20 Byte pro Element. Mal die 500mio Elementen wäre ich bei 10GB. Wo kommen die zusätzlichen 50% her? Eine Antwort darauf ist das aligment, das bei Visual Studio 2010 laut meinen Recherchen bei 8 Byte liegt. Dann wären wir bei 24Byte pro Element, das erklärt aber noch immer nicht vollständig den hohen Speicherverbauch.