Speicherplatz-Optimierung

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
BlackJack

Gibt's jetzt noch eine Frage? Und wenn ja, wie lautet die?

Ansonsten stell ich noch ein paar: es sollen eine Billion Fliesskommazahlen gespeichert werden!? In *einer* Datenstruktur? Oder in einer Million Datenstrukturen? Und wie soll darauf zugegriffen werden? komplett wahlfrei oder reicht der Zugriff auf jeweils ein "Millionen-Häppchen"?

Ein `array.array()` mit einer Million `float()`\s belegt grob 8 Megabyte Speicher. Wenn man C `float`\s nimmt, und deren Genauigkeit ausreicht, ist's nur der halbe Speicherbedarf.

Um Plattenplatz zu sparen, könnte es sich eventuell lohnen die Daten mit `zlib` oder `bz2` zu komprimieren. Beide stehen unter diesen Namen als Kodierung für die `encode()`/`decode()`-Methoden von Zeichenketten zur Verfügung. Ohne Komprimierung in irgendeiner Weise brauchen eine Billion Fliesskommazahlen "roh" ca. 8 bzw. 4 Terabyte, je nachdem ob man `float` oder `double` (beides C-Datentypen) verwendet.

Zu guter Letzt würde ich auch noch mal gerne `pickle` in Frage stellen. Bei grossen Datenmengen sind eigentlich Datenbanken gefragt. Bei *diesen* Grössenordnungen und der Art der Daten am besten spezielle Formate wie HDF5 oder netCDF, die auf grosse Mengen von Messdaten und Ähnliches spezialisiert sind.

http://en.wikipedia.org/wiki/HDF5
Antworten