LabVIEWForum.de
Öffnen einer 250MB text-Datei - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein)
+---- Forum: Datenbank & File IO (/Forum-Datenbank-File-IO)
+---- Thema: Öffnen einer 250MB text-Datei (/Thread-Oeffnen-einer-250MB-text-Datei)

Seiten: 1 2


Öffnen einer 250MB text-Datei - differtd - 05.10.2009 10:56

Hallo!

Ich wollte mir meine schönen Simulationsdaten (text-Datei) einlesen und ein wenig weiterverarbeiten. Leider sagt mir LabVIEW aber: "Zu wenig Speicher" (Auch wenn ich sie nur einlese und ein Anzeigefenster für den String mache, sprich: die weiteren Rechenoperationen sind vorerst nicht schuld). Das hört sich ja erst mal aussagekräftig an, aber ich glaub das nicht ganz, da die Datei nur 250MB groß ist!

Hat jemand eine Idee was schief läuft ?

Schönen Gruß!


Öffnen einer 250MB text-Datei - TSC - 05.10.2009 11:26

nur 250 MB??
Das ist dann quasi 150 mal die Bibel hintereinander? Da ist das TXT-Format definitif nicht für gedacht!

Überdenke das doch lieber nochmal.

LG
Torsten


Öffnen einer 250MB text-Datei - jg - 05.10.2009 12:01

Außerdem, wie genau sieht dein Datenlesen aus? Wirklich nur Read from Text File, oder vielleicht gleich eine Wandlung in irgendwelche DBL-Zahlen? Wenn nur txt-String, dann auf jeden Fall keine lokalen Variablen diesen Controls anlegen, denn das bedeutet immer Datenkopien im Speicher.

Gruß, Jens


Öffnen einer 250MB text-Datei - Lucki - 05.10.2009 12:31

Wenn Du in der Date nur etwas Bestimmtes suchts, dann empfiehlt sich die Option (rechte Maustaste) "Zeilenweise lesen".
Als z.B immer nur 1 Zeile lesen und sehen ob man darin fündig wird.
Mit dieser Option Damit könntest Du auch z.B nur immer 1000 Zeilen blockweise einlesen und das dann einzeln verarbeiten.
Sage erst mal, wie die Daten aussehen und was mit "Ein wenig weiterverarbeiten" präzise gemeint ist. Dann wird sich eine Lösung finden.


Öffnen einer 250MB text-Datei - differtd - 05.10.2009 16:01

Also die Daten sind in dem Format "1.78996e-06", durch "Leerzeichen" getrennt. Am Ende der letzten Spalte ist immer ein "Enter". Das File hat dann zB. 8 Spalten und mehrere Millionen Zeilen.
Ich versuche es mit der angehängten Methode einzulesen, was genau so fehlschlägt wie mit "Aus Textdatei lesen".


Öffnen einer 250MB text-Datei - TSC - 05.10.2009 16:59

An welcher Stelle sagt LabVIEW das denn? Evtl. kannst du erstmal alle Zeilen in ein Array schreiben (ohne die einzelnen Zeilen schon direkt in DoubleWerte zu zerlegen). Anschließend hantierst du dann nur noch mit dem String Array?

LG
Torsten


Öffnen einer 250MB text-Datei - jg - 05.10.2009 19:07

Auweia, erst den gesamten String eingelesen, und dann hunderte von String-Operationen (String teilen, dabei wahrscheinlich öfters umkopieren...), und parallel brauchst du dann auch den Speicher für dein 2D-Array, Speicherbedarf s.u.

Ich gehe mal davon aus, dass deine Zeilen im File immer nur Zahlenstrings, getrennt durch einen Spaltentrenner (also quasi eine csv-Datei), sind.

Dann probiere es mal so:
[attachment=21572]

Speicherbedarf: #Spalten * #Zeilen * 8 bytes. Für den String quasi nichts, da jetzt zeilenweise eingelesen wird.

Gruß, Jens


Öffnen einer 250MB text-Datei - Lucki - 06.10.2009 08:32

Jede Art von Datenverarbeitung endet entweder in einr Information auf dem Bildschirm, oder aber in einer anderen (großen) Datei. In keinem der beiden Fälle wird also im Endergebnis nennenswertes Memory benötigt. Bei der Verarbeitung ein riesengroßen Datei kommte es darauf an, daß Blockweise gearbeitet wird und eventuell anfallende große Zwischenergebnisse als temporäre Dateien gespeichert werden.
Deshalb kann ich mich nur wiederholen: Wenn sich differdt durchringen könnte, zu verraten, was er mit der Riesendatei vorhat, wäre das Problem hier schon schon so gut wie gelöst und es mußte nicht ins Blaue hinein nach Lösungen geraten werden.
Ein erster Schritt könnte z.B. darin bestehen, daß die ASCI-Daten erst mal ins Binärformat konvertiert werden, bevor dann weiter darauf zugegriffen wird. Bei dieser Gelegenheit wäre auch zu überlegen, ob nicht das Zahlenformat sgl statt dbl ausrechend ist. Wenn es sich bei den Daten um 16 bitige Messwerte handelt, wäre diese Frage schon mal zu bejahen.


Öffnen einer 250MB text-Datei - Lucki - 06.10.2009 08:57

Mir fällt da noch was ein: Wenn eine Simulationsdatei so riesengroß ist, dann liegt das wahrscheinlich daran, daß die Schrittweite dt sehr klein gewählt wurde. Das mag notwendig gewesen sein, damit die Simulation konvergiert, ist aber vielleicht nicht notwendei zur Darstellung und Auswertung der Daten. Neuabtastung der Daten mit dem entsprechenden VI würde die Datenmenge schon mal drastisch reduzieren.
Edit: @differdt: Poste doch einfach mal das erste MB der Datei (gezippt). Dann läßt sich leicht sehen, ob man die Datenmenge bei zu hoher Punktdichte reduzieren kann.


Öffnen einer 250MB text-Datei - differtd - 06.10.2009 10:05

Okay, ich wollte niemanden mit Einzelheiten langweilen, aber ihr habt es ja so gewolltWink
Also das File enthält für jeden Punkt auf einer Ebene (zB.: 100*100 Punkte) eine komplexe elektrische und magnetische Feldamplitude (je drei Komponenten x y z sprich 6 komplexe Feldkomponenten). Da ich einen kurzen Laserpuls simuliere nutze ich das Prinzip der Superposition und habe dann für zB 128 verschiedene Wellenlängen die Feldkomponenten an allen Raumpunkten, sprich 128*100*100 Zeilen und 6*2+2 Spalten (6 komplexe zahlen * 2 = 12 reelle Zahlen + 2 Raumkoordinaten).
Das Ziel ist es jetzt an jedem Raumpunkt die Feldamplituden für die verschiedenen Wellenlängen zu addieren. Das ergibt dann wieder eine handhabbare größe. Es scheitert aber schon beim öffnen des Files.
Die Stützstellenzahl würd ich ungern noch weiter verringern, weswegen die Datnmenge nicht durch interpolation reduziert werden sollte.

Schönen gruß und vielen Dank für die bisherigen Ideen!