Wenn dein Problem oder deine Frage geklärt worden ist, markiere den Beitrag als "Lösung",
indem du auf den "Lösung" Button rechts unter dem entsprechenden Beitrag klickst. Vielen Dank!
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?
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
25.07.2011, 06:19 (Dieser Beitrag wurde zuletzt bearbeitet: 25.07.2011 07:16 von Y-P.)
Developer Suite Core -> LabVIEW 2015 Prof.
2006
EN
71083
Deutschland
RE: Textdatei auslesen.
, 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
-------------------------------------------------------------------------- Bitte stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort !!
--------------------------------------------------------------------------
25.07.2011, 07:12 (Dieser Beitrag wurde zuletzt bearbeitet: 25.07.2011 07:49 von Lucki.)
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.
25.07.2011, 07:49 (Dieser Beitrag wurde zuletzt bearbeitet: 25.07.2011 07:51 von GerdW.)
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...
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
Wer die erhabene Weisheit der Mathematik tadelt, nährt sich von Verwirrung. (Leonardo da Vinci)
!! BITTE !! stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort!
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
PS:
Die Datei mit 600000 Zeilen mit deinen Werten ist bei mir nur ~38MB
Dieser Beitrag soll weder nützlich, informativ noch lesbar sein.
Er erhebt lediglich den Anspruch dort wo er ungenau ist, wenigstens eindeutig ungenau zu sein.
In Fällen größerer Abweichungen ist es immer der Leser, der sich geirrt hat.
Rette einen Baum!
Diesen Beitrag nur ausdrucken, wenn unbedingt nötig!
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
25.07.2011, 10:01 (Dieser Beitrag wurde zuletzt bearbeitet: 25.07.2011 10:08 von GerdW.)
mal auf die ganz simple Tour:
(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?