10.08.2011, 14:28
Hallo Leute,
ich möchte ein ASCII-File auslesen. In jeder Zeile steht eine Information die ich brauche, deshalb werte ich jede Zeile aus, hole die Informationen aus der Zeile, die ich brauche und speichere diese in ein Array. Anfangs habe ich versucht das File komplett einzulesen. Dabei bekam ich Probleme mit dem Arbeitsspeicher, da die Files sehr groß sind. Darum lese ich die Files jetzt zeilenweise von vorne nach hinten aus. Das dauert aber viel zu lange. Deshalb möchte ich das Lesen aus der Datei parallelisieren. Das File soll nicht von vorne nach hinten ausgelesen werden, sondern es soll an mehreren Stellen im File gleichzeitig gelesen werden.
Ich lese deshalb beispielsweise parallel das erste, zweite und dritte drittel des Files, speichere die gewonnen Informationen in drei Arrays und führe diese drei Arrays zum Schluss zu einem Array zusammen. Davon erhoffe ich mir, dass das File dreimal so schnell ausgelesen werden kann.
Leider muss ich dafür das File dreimal öffnen und schließen. Im angehängtem Bild wird die Idee exemplarisch dargestellt. Die drei Sub-VIs lesen das jeweils File von der gegebenen Start-Adresse bis zur jeweiligen End-Adresse Zeile für Zeile aus, ziehen die gewünschten Informationen und speichern diese jeweils in 3 Arrays (Array 1, Array 2 und Array 3).
Dies funktioniert leider sehr unzuverlässig. Das File wird zum Schluss sehr langsam ausgelesen.
Gibt es eine bessere Methode ein File parallelisiert auszulesen, oder an verschiedenen Stellen im File gleichzeitig zuzugreifen? Gibt es vlt. VIs die für diese Zwecke geeignet sind?
Ich würde mich freuen, wenn Ihr mir helfen könnt.
ich möchte ein ASCII-File auslesen. In jeder Zeile steht eine Information die ich brauche, deshalb werte ich jede Zeile aus, hole die Informationen aus der Zeile, die ich brauche und speichere diese in ein Array. Anfangs habe ich versucht das File komplett einzulesen. Dabei bekam ich Probleme mit dem Arbeitsspeicher, da die Files sehr groß sind. Darum lese ich die Files jetzt zeilenweise von vorne nach hinten aus. Das dauert aber viel zu lange. Deshalb möchte ich das Lesen aus der Datei parallelisieren. Das File soll nicht von vorne nach hinten ausgelesen werden, sondern es soll an mehreren Stellen im File gleichzeitig gelesen werden.
Ich lese deshalb beispielsweise parallel das erste, zweite und dritte drittel des Files, speichere die gewonnen Informationen in drei Arrays und führe diese drei Arrays zum Schluss zu einem Array zusammen. Davon erhoffe ich mir, dass das File dreimal so schnell ausgelesen werden kann.
Leider muss ich dafür das File dreimal öffnen und schließen. Im angehängtem Bild wird die Idee exemplarisch dargestellt. Die drei Sub-VIs lesen das jeweils File von der gegebenen Start-Adresse bis zur jeweiligen End-Adresse Zeile für Zeile aus, ziehen die gewünschten Informationen und speichern diese jeweils in 3 Arrays (Array 1, Array 2 und Array 3).
Dies funktioniert leider sehr unzuverlässig. Das File wird zum Schluss sehr langsam ausgelesen.
Gibt es eine bessere Methode ein File parallelisiert auszulesen, oder an verschiedenen Stellen im File gleichzeitig zuzugreifen? Gibt es vlt. VIs die für diese Zwecke geeignet sind?
Ich würde mich freuen, wenn Ihr mir helfen könnt.