Datei geringster Speicherverbrauch - 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: Datei geringster Speicherverbrauch (/Thread-Datei-geringster-Speicherverbrauch) |
Datei geringster Speicherverbrauch - GT123 - 08.11.2011 15:26 Hallo, ich bin auf der Suche nach einer Möglichkeit Messdateien (bisher Textdatei) anderst abzuspeichern. Wer kann mir aus Erfahrung sagen ob es ausser meiner bisherigen Variante noch etwas besseres gibt als binär speichern? Binär speichern geht soweit, aber ich spare nicht viel Speicherplatz (z.B. von 1.3MB auf 1.2). Gibt es noch eine bessere Speichermöglichkeit mit der ich weniger Speicher verbrauche? In dem angehängten Vi funktioniert das lesen nicht. Was ist dort falsch? Ich hoffe es kann mir jeman weiterhelfen. RE: Datei geringster Speicherverbrauch - unicorn - 08.11.2011 15:47 Du hast die Zahlen ja noch gar nicht binär gespeichert. Du hast lediglich Deinen String in ein Byte-Array umgewandelt, was ziemlich das gleiche ist. Du müsste jede Zeile in ein DBL umwandeln und dann dieses Array abspeichern. Auf der File I/O-Palette gibt es dazu ein passendes VI. RE: Datei geringster Speicherverbrauch - GerdW - 08.11.2011 16:38 Hallo GT, es hilft immer, die Dateiposition im Blick zu behalten, wenn man mit der selben Datei hantiert! Außerdem bekommt man bei Weglassen der "Anzahl" die Daten ohne Clusterverpackung geliefert... [attachment=37008] Dein Umwandeln in U8-Stream bringt nichts. Du hast vorher ca. 12 Zeichen pro Zahl, ein Umwandeln der Texte nach DBL würde eine Reduktion auf 8 Byte pro Zahl bedeuten - bei Beibehaltung der bisherigen Genauigkeit. Wenn 23 bit Genauigkeit ausreichen, kann man auch SGL verwenden und braucht nur noch 4 Byte pro Zahl... RE: Datei geringster Speicherverbrauch - GT123 - 09.11.2011 07:20 Hallo unicorn, (08.11.2011 15:47 )unicorn schrieb: Du hast die Zahlen ja noch gar nicht binär gespeichert. Du hast lediglich Deinen String in ein Byte-Array umgewandelt, was ziemlich das gleiche ist. Du müsste jede Zeile in ein DBL umwandeln und dann dieses Array abspeichern. Auf der File I/O-Palette gibt es dazu ein passendes VI.Variante 1 o. 2 bei beidem ist die Datei hinterher 9,4MB gross? Was ist falsch? Ich wandle zeilenweise in DBL, also nicht direkt da ich ja kein String an DBL anschliessen kann. Reden wir vom gleichen DBL? Was hat Double Precision mit binär zu tun? RE: Datei geringster Speicherverbrauch - GerdW - 09.11.2011 08:56 Hallo GT, wir haben nie behauptet, du solltest deine U8-Werte nach DBL konvertieren und dann speichern (jeweils 1 Byte in einem 8-byte-DBL verstecken)... Du sollst die Zahlen in deinem String nach DBL konvertieren und das dann speichern! Dein Beispiel erzeugt nun noch ~750kB große Dateien: [attachment=37026] RE: Datei geringster Speicherverbrauch - GT123 - 10.11.2011 14:01 Hallo, ok soweit geht das, auch mit dem zurückkonvertieren in string. Jetzt wollte ich eine bestehende Textdatei (Text und Zahlen) einlesen u. binär abspeichern. Schaffe ich aber nicht. Es muss was mit den Trennzeichen und Formatstring zu tun haben? RE: Datei geringster Speicherverbrauch - unicorn - 10.11.2011 16:24 Du kannst eine Textdatei direkt lesen: "Read from Text File.vi" von der File I/O Palette. Da brauchst Du keine Formatierung, pi pa po zu beachten. Wenn die Datei den Inhalt in der Form hat, wie die String-Konstante in Deinem Beispiel, kannst Du den eingelesenen String so wie GerdW gezeigt hat in ein DBL-Array umwandeln. Alternativ kannst Du mit "Read From Spreadsheet File.vi" Deine Textdatei direkt in ein Array umwandeln. Hier muss das Dezimaltrennzeichen, der Formatstring und das Zahlentrennzeichen angegeben werden (wie bei "Scan From String.VI"). Zur Ergänzung des besseren Verständnisses solltest Du Dir noch mal ansehen, wie Zahlen (Integer, Unsigned Integer, Float) bei Computern im Speicher dargestellt werden. RE: Datei geringster Speicherverbrauch - GT123 - 11.11.2011 08:06 Ok, danke unicorn. Also dass mit dem Einlesen einer Textdatei ist mir nun klar. Das Problem ist nun das ich wieder ein 2D Array erhalte und nach dem binär speichern u. wieder lesen ich nicht das gleiche vorliegen habe. Denn in der ursprünglichen Textdatei ist auch Text enthalten u. nicht nur Zahlen (insgesamt Mehrzeilig und die Werte mit Tabulatoren getrennt). Der Text wird logischerweise in die Zahl 0.0 konvertiert. Ich wollte eben die bestehende Textdatei binär abspeichern (Reduzierung der Grösse), danach aber diese binäre Datei wieder entweder umwandeln in eine Textdatei ASCII oder nur auslesen. RE: Datei geringster Speicherverbrauch - jg - 11.11.2011 09:22 Also ganz normaler ASCII-Text, wenn du den im "Binärformat" speicherst, dann braucht das genauso viel Speicherplatz wie beim Speichern als txt, nämlich immer 1 byte pro Zeichen. Schon mal darüber nachgedacht, deinen File zu komprimieren? Mit den Zip-VIs? [attachment=37087] Gruß, Jens |