Der Martin: Wieviel RAM braucht eine Text-Datei

Beitrag lesen

Hallo,

Wenn du uns sagst, worauf du eigentlich hinaus willst, könnten wir der Sache vielleicht näher kommen.
In erster Linie war das nur Interesse. Ich dachte, vielleicht "enfaltet" sich eine Datei im RAM und es gibt eine Fausformel der Berechnung. (z.b. eine 5MB große Textdatei verbraucht 5 mal so viel Platz (=25MB) im RAM.

nein, so eine Faustformel gibt es nicht. Als erste Mutmaßung kann man aber davon ausgehen, dass der Speicherbedarf ungefähr gleich der Dateigröße ist. Ungefähr, weil immer auch noch etwas Overhead dazukommt - etwa für programmeigene Variablen.
Nur wenn das Programm die Daten beim Lesen umcodiert, ändert sich der Speicherbedarf eventuell deutlich. So könnte ein Texteditor beispielsweise so geschrieben sein, dass er intern jedes Zeichen mit 16bit (2 Byte) codiert, während die meisten Textdateien entweder konstant 1 Byte pro Zeichen speichern (z.B. ASCII, oder die ISO-8859-Codierungen), oder je nach Zeichen unterschiedlich viel. UTF-8 belegt beispielsweise je nach Zeichencode ein bis vier Byte für ein Zeichen. Für die Verarbeitung kann es günstig sein, diese Codierung speicherintern umzuschlüsseln.

Für mich von praktischem Interesse war es, wie sich eine XML-Datei, deren DOM-Baum ich mit einer entsprechenden Funktion lade(z.b. PHPs simple-xml oder einer Python-Entsprechung), im RAM hinsichtlich des verbrauchten Speichers desselben verhält.

Aufgepasst. Beim Parsen von XML braucht man vor allem Speicherplatz, um den DOM-Baum aufzubauen und abzubilden. Die XML-Datei selbst könnte man sequentiell lesen, so dass man für die "Rohdaten" nicht mehr als ein paar kB als Pufferspeicher braucht - aber das vollständige Lesen in einem Rutsch ist programmtechnisch viel einfacher zu realisieren.
Wieviel Speicher für den DOM-Baum gebraucht wird, hängt von vielen Faktoren ab, etwa die Anzahl der Knoten und Attribute, die Länge der Element- und Attributbezeichner, und natürlich auch hier wieder die Effizienz des Programms, d.h. wie "verschwenderisch" es mit dem verfügbaren Speicher umgeht.

So könnte man abschätzen, wie groß die Datei auf der Platte sein dürfte, um sie noch zu öffnen, ohne den verfügbaren Speicher zu überschreiten.

Sehr gewagt. Beim XML-Parsen würde ich als erste Orientierung annehmen, dass der Speicherbedarf mindestens doppelt so groß ist wie die Dateigröße der XML-Datei.

So long,
 Martin

--
Realität ist eine Illusion, die durch Unterversorgung des Körpers mit Alkohol entstehen kann.
Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(