LabVIEWForum.de
Textdatei auslesen. - 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: Textdatei auslesen. (/Thread-Textdatei-auslesen--19498)

Seiten: 1 2


Textdatei auslesen. - einstein1805 - 24.07.2011 16:46

Hallo Gemeinde.

Da Ihr mehr Erfahrung mit LV habt, hier meine Frage.
Wie lange dauert es eine Textdatei von einer Größe von 85MB auszulesen.
Diese .txt-Datei ist in 5 Spalten und ca. 600000 Zeilen aufgebaut. Das auslesen der Datei erfolgt über zwei for-Schleifen. Die erste liest die Zeile aus und die nachfolgende Schleife sortiert mir die Werte in den Spalten. Letztens habe ich eine 27MB-Datei ausgewertet und das dauerte "16 Stunden".
Ist das normal?

Gruß Einstein


RE: Textdatei auslesen. - GerdW - 24.07.2011 17:50

Hallo Einstein,

Zitat:das dauerte "16 Stunden". Ist das normal?
Nö.

Es gilt wie immer:
- VI anhängen!
- (Auszug deiner) Textdatei anhängen oder deren Format sauber beschreiben

Um 85MB zu lesen, benötigt ein moderner PC <5s. Alles weitere liegt in deiner Programmierung begründet...


RE: Textdatei auslesen. - einstein1805 - 24.07.2011 21:19

Hallo Gerd.

Im Anhang befinden sich die Rohdaten und im anderen Bild die Programmierung. Die erste Schleife liest die Zeile und die zweite Schleife die einzelnen Spalten.

Gruß Einstein


RE: Textdatei auslesen. - Y-P - 25.07.2011 06:19

Bahn, aber wenn man innerhalb eines Schleifendurchgangs der äußeren Schleife 6 Initialize-Arrays (an der inneren For-Schleife) verwendet, ist das eher problematisch.
Was möchtest Du denn genau machen. Ich blicke da nicht wirklich durch.

Gruß Markus


RE: Textdatei auslesen. - Lucki - 25.07.2011 07:12

Gerd schieb:
Zitat:Es gilt wie immer:
- VI anhängen!
- (Auszug deiner) Textdatei anhängen oder deren Format sauber beschreiben

Denn Du das machst, motiviert das die Experten ungemein. Bei den geposteten 2 Bildern statt des echten VIs und des echten Textes ist das aber weniger der Fall.

Und übrigens: Einsteins "Annus mirabilis", in dem er fünf Schriften veröffentlichte, die die Welt der Physik revolutionierten, war 1905 und nicht 1805. Big Grin


RE: Textdatei auslesen. - GerdW - 25.07.2011 07:49

Hallo Einstein,

schon mal die Hilfe zur Funktion SpreadsheetstringToArray durchgelesen? (Ich gebe zu, auch die könnte bei 85MB-Textdateien Probleme machen - aber weniger als deine ">16h"-Aktion...)

Außerdem:
Was ist denn "25.04.2011 14:02:34.942.322" für ein Zeitstempel? Insbesondere der Teil nach den Sekundenangaben?
Alles andere lässt sich wunderbar nach Zahlen konvertieren...

Zitat:Es gilt wie immer:
- VI anhängen!
Was ist daran so schwierig zu verstehen?


RE: Textdatei auslesen. - jg - 25.07.2011 08:27

Klar brauchst du mit diesem Konstrukt > 16h. Match Regular Expression ist eine sehr mächtige, aber damit auch sehr langsame Funktion. Da du das jetzt für jede Zeile machst, und dann auch noch 6x pro Zeile, wundert mich es nicht, dass du solange brauchst.

Befolge Gerds Vorschlag.

Gruß, Jens


RE: Textdatei auslesen. - SeBa - 25.07.2011 08:48

Also wenn man mal deinen Zeitstempel mit einem Standard-Zeitstempel ersetzt, dann braucht mein (gefühlt) uralt Laptop greade mal 17 Sekunden um 600000 Zeilen je 6 Spalten zu interpretieren. Und das dann noch mit ner QnD Methode Blush

[attachment=34820]

PS:
Die Datei mit 600000 Zeilen mit deinen Werten ist bei mir nur ~38MB


RE: Textdatei auslesen. - einstein1805 - 25.07.2011 09:49

Hi.

Also erst mal viel Dank für Euren Support. Jetzt werde ich Eurer Aufforderung nachkommen und ein Vi und Testdaten hochladen. Allerdings hat sich das Problem gelöst. Ich habe den Baustein "Match Regular Expression" ersetzt durch "Match Pattern" und siehe da, kaum habe ich auf ausführen gedrückt, schon ist das Ergebnis da.

Trotzdem könnt Ihr gerne nochmal drüberschauen und mir weitere Ratschläge unterbreiten.

Gruß Einstein


RE: Textdatei auslesen. - GerdW - 25.07.2011 10:01

Hallo Einstein,

mal auf die ganz simple Tour:
[attachment=34824]
(Was man noch vereinfachen könnte, indem man die Vorgabe für SpreadsheetstringToArray auf DBL und "%,;%f" ändert - dann kann man aber die Timestamps nicht auswerten, falls das mal nötig wird...)

P.S.:
Wozu wandelst du deine Daten von Array nach Matrix um? Reicht es dir nicht aus, einfach per IndexArray die gewünschten Spalten zu indizieren? Blink