Thread Zeile x _schnell_ aus riesigem file raussuchen ? (19 answers)
Opened by Student87 at 2013-02-19 12:50

Student87
 2013-02-19 12:50
#165887 #165887
User since
2012-11-08
73 Artikel
BenutzerIn
[default_avatar]
Hi,

Problembeschreibung (Kann übersprungen werden)

ich habe ein file mit 249 250 621 Zeilen und nur einem Buchstaben pro Zeile.
Das file ist 475,4 MB groß.
Wenn ich es als Array einlese, rasen meine im Kuchendiagramm angezeigten 2,5 GB Arbeitsspeicher ganz schnell gegen 0 und ich krieg ne memory-Fehlermeldung.

Dieser "kleine" Test ist leider nur die Spitze des Eisbergs, weil: eigentlich benötige ich diesen Array 2 x (Der zweite wird modifiziert -> Viele Stellen werden "maskiert") und zusätzlich einen dritten Array aus einer 448,3 MB Datei mit 12 874 502 Zeilen.

Naiv wie ich bin, hatte ich gedacht 475,4 * 2 + 448,3 < 2,5 GB -> Vielleicht klappt das ja ... aber ich kann nichtmal einen einzigen Array einlesen. Wieso benötigt ein Array viel mehr Speicher als ein file auf der Festplatte ?

Das gute ist:
Ich kann immer genau berechnen, aus welcher Zeile bzw. welchem Array-Element ich gerade Informationen benötige. D.h., ich könnte auch einfach 3 files haben, aus denen ich mir immer nur die entsprechende Zeile rauspicke.

Frage

Wie kann ich mir aus einem riesigen file mit 250 Mio Zeilen schnell eine Zeile rauspicken?
Ich kenne nur die Möglichkeit, über den system() Befehl head und tail aus der Bash zu benutzen, aber es braucht wirklich EWIG bei den großen Zahlen.

View full thread Zeile x _schnell_ aus riesigem file raussuchen ?