Performance Probleme beim lesen einer großen Messdatendatei
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!
Performance Probleme beim lesen einer großen Messdatendatei
Hallo LabView-Freunde,
bin dabei mein großen Programm Performancetechnisch zu verbessern und dabei ist mir aufgefallen dass mein "Speicherfresser" das Programm zum Visualisieren von Messprotokollen ist. Hab mir jetzt schon einiges über "Fixing Performance Problems" o.ä. durchgelesen aber komm in meinem Fall nicht drauf was so "schlecht" programmiert wurde.
Anwendungsfall:
Ich schreibe über einen längeren Zeitraum Messwerte in eine TXT File. Dazu werden alle Dateien als String formatiert und in der Datei abgelegt. In einem separaten Programm "Visualisierung und Druck" kann man nun dieses Messprotokoll nochmal einlesen und analysieren. Da die TXT Datei schon ziemlich groß werden kann (bis 15 MB) könnt Ihr euch sicher vorstellen dass einige Messwertreihen dort drin stehen (bis zu 500.000). Da wir auch während der aktuellen Messung das Messprotokoll einsehen wollen müllt es so meinen Speicher zu bis es dann schlussendlich zu einem Speicherüberlauf kommt wenn man den Programm nicht neu startet. Da dies aber mit der Zeit lästig wird wollt ich mein Programm optimieren.
Frage: Meine Forschleifen sind idiziert somit ist hier eine Allocierung gemacht. Ok...im LabView kurs haben Sie mir zu einem anderen Datenformat geraten (TDMS) aber da müsste ich mein komplettes programm umstricken und das will ich NOCH nicht. Bringt das TDMS format überhautp so viel??
Vielleicht seht ihr ja noch einen Weg mein bestehendes Programm speichertechnisch zu optimieren.....ich wär Euch echt Dankbar wenn ihr da mal drüberschauen könntet ob Ihr noch Ideen habt. Gestaret wird das VI "Visualisierung&Druck".
Performance Probleme beim lesen einer großen Messdatendatei
' schrieb:im LabView kurs haben Sie mir zu einem anderen Datenformat geraten (TDMS)
Zitat:aber da müsste ich mein komplettes programm umstricken und das will ich NOCH nicht.
Warte noch ein Weilchen ...
Zitat:Bringt das TDMS format überhautp so viel??
Ja.
Strings gehören mit zu den aufwändigsten Datentypen. Binäre Typen, und seien es nur binäre Streams, so wie es TDMS einer ist, sind im Zweifelsfall immer vorzuziehen.
Jeder, der zur wahren Erkenntnis hindurchdringen will, muss den Berg Schwierigkeit alleine erklimmen (Helen Keller).
Performance Probleme beim lesen einer großen Messdatendatei
Hab jetzt noch eine Automatik implementiert, so dass das Frontpanel nach x Sekunden wieder gelöscht wird.....das bringt mir auch schon was hab ich festgestellt.
Habt Ihr sonst noch Ideen die mich vorübergehend retten könnten??
Parallel werd ich mich wohl doch mal dem TDMS-Format zuwenden und mir die Verwendung und den Aufbau der Datenspeicherung reinziehen!!!
Performance Probleme beim lesen einer großen Messdatendatei
So Freunde der TDMS Datei....
...hab gerade eine Messdatei zum Spaß erzeugt mit der gleichen Datenanzahl von meinem messprotokoll.....und siehe da.....die TDMS Datei...sieht nicht schlecht aus....aber hat jetzt anstatt 6MB (Textdatei) plötzlich 14MB...???
bringt mir das Format jetzt dennoch performance steigerung?? und weniger speicherauslastung?? Muss irgendwie meine Ausgelagerte Datei im Windows verkleinern....
Performance Probleme beim lesen einer großen Messdatendatei
Erste Frage: Welche deiner LV-Versionen ist denn jetzt gültig:lv86wie im Profil steht oder, wie im Posting steht? Was im Profil steht sollte obere Grenze sein! Da ich noch kein LV2010 installiert habe, ich ich deinen geposteten Code nicht ankucken.
' schrieb:Hab jetzt noch eine Automatik implementiert, so dass das Frontpanel nach x Sekunden wieder gelöscht wird.....das bringt mir auch schon was hab ich festgestellt.
Durch das Löschen des Frontpanels entstehen Performance-Vorteile? Das könnte auf überfüllte Graphen oder Tabellen hindeutet. Was ich aber erst sagen könnte, wenn ich den Sourcecode lesen könnte.
Jeder, der zur wahren Erkenntnis hindurchdringen will, muss den Berg Schwierigkeit alleine erklimmen (Helen Keller).
Performance Probleme beim lesen einer großen Messdatendatei
' schrieb:...hab gerade eine Messdatei zum Spaß erzeugt mit der gleichen Datenanzahl von meinem messprotokoll.....und siehe da.....die TDMS Datei...sieht nicht schlecht aus....aber hat jetzt anstatt 6MB (Textdatei) plötzlich 14MB...???
Das kann ich mir nicht ganz vorstellen.
Sind es wirklich die identischen Messdaten bzw. die Anzahl der Messwerte?
Da TDMS binär speichert, müsste die Datei deutlich kleiner sein und bei mir war sie es bisher auch immer.
Grüße
10.09.2010, 13:38 (Dieser Beitrag wurde zuletzt bearbeitet: 10.09.2010 13:44 von jg.)
Performance Probleme beim lesen einer großen Messdatendatei
' schrieb:Das kann ich mir nicht ganz vorstellen.
Sind es wirklich die identischen Messdaten bzw. die Anzahl der Messwerte?
Da TDMS binär speichert, müsste die Datei deutlich kleiner sein und bei mir war sie es bisher auch immer.
Nein, nicht unbedingt. Das hängt auch sehr davon ab, wie du in eine TDMS-Datei speicherst. Bei jedem Schreibvorgang werden noch zusätzlich Indexe, Blockumbrüche u.ä. geschrieben. Wenn du also jeden Datenpunkt einzeln in eine TDMS-Datei schreibst, erzeugt das einen gewissen Overhead.
Und wenn du bei eine DBL-Zahl im ASCII-Format mit z.B. 3 Nachkommastellen abspeicherst, dann sind das 5-7 Bytes, binär aber 8 Byte!
Gegen den Overhead gibt es Möglichkeiten. z.B. kann man den TDMS-File am Ende defragmentieren (s. das entsprechende VI in der TDMS-Palette). Oder man kann die Anzahl der Schreibzugriffe per "TDMS Set Properties" reduzieren, hierzu am besten die Hilfe zu diesem VI durchlesen.
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!
Performance Probleme beim lesen einer großen Messdatendatei
' schrieb:Und wenn du bei eine DBL-Zahl im ASCII-Format mit z.B. 3 Nachkommastellen abspeicherst, dann sind das 5-7 Bytes, binär aber 8 Byte!
Ja gut, das sind aber dann unterschiedliche Datenmengen und in der ASCII-Datei fehlen Informationen. Dann ist das natürlich richtig.
Ich ging nun von identischen Daten mit identischer Genauigkeit aus.
Performance Probleme beim lesen einer großen Messdatendatei
Also ich hab 150.000 Messwertreihen a 11 Messgrößen in die TDMS geschrieben.....also 11 Spalten! Hab einfach ein Beispiel VI erweitert um den Speicherplatz zu testen.