Großes Array macht probleme - Druckversion +- LabVIEWForum.de (https://www.labviewforum.de) +-- Forum: LabVIEW (/Forum-LabVIEW) +--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein) +--- Thema: Großes Array macht probleme (/Thread-Grosses-Array-macht-probleme) |
Großes Array macht probleme - joedoe1979 - 22.09.2006 14:19 Hallo @ all Ich möchte Daten, die über die RS232 Schnittstelle kommen 30 Minuten lang aufzeichen. Nach meinen Berechnungen brauche ich dafür ein Array das 360000 Werte speichern muss. Ein dynamisches Array wollte ich nicht nehmen. Deshalb habe ich ein Array mit 360000 Werte erstellt. Anschließend einen Zähler genommen, um die Werte in das Array zu speichern. Hierzu verwende ich die LabVIEW-Funktion "Teilarray ersetzen". Jedoch benötigt diese unmengen an Zeit. Eigentlich sollte doch die Arraygröße nichts ausmachen, wenn man mit einem Pointer auf die Adresse zugreift. Gibt es einen Trick um das ganze zu beschleunigen? Oder kennt jemand eine andere Möglichkeit. Ich habe mal das Beispielprogramm mit beigefügt. Grüsse Michael Großes Array macht probleme - Guenther - 22.09.2006 14:46 ' schrieb:Gibt es einen Trick um das ganze zu beschleunigen? Oder kennt jemand eine andere Möglichkeit. Hallo Michael, gibt es: Verzichte auf die Lokalen Variablen innerhalb der Schleife. Die kosten jede Menge Zeit. Benutze doch ein For Schleife und nimm den Autoindex, damit kannst Du jedes Arrayelement der Reihe nach abarbeiten, wie im VI. Oder stecke die RS232 Kommunikation in eine For oder While Schleife, ein Autoindex für die Messerte erzeugt das Array ohne zusätzlichen Zeitaufwand. Gutes Gelingen, Guenther [attachment=3368] Großes Array macht probleme - joedoe1979 - 22.09.2006 15:10 Die Daten kommen immer einer nach dem anderen. Somit geht es mit der Array-Indizierung nicht wirklich. Ich möchte ja ein großes Array haben. Wenn dann der 100. Wert kommt möchte ich die Daten einfach nur in die 99.igste Zelle schreiben. Also einfach mit einem Pointer auf eine Adresse zugreifen, den Wert reinschreiben und fertig. Großes Array macht probleme - jg - 22.09.2006 15:40 <div align="left">Hallo, Michael, wieso benutzt du noch einen eigenen Zähler, wenn du das Array sowieso in einer For-Schleife füllst? Die Schleifen von LV (While & For) haben doch ein Zählerelement (dieses kleine Quadrat unten links). Wenn du das mit deinem Array-Index-Eingang verbindest, kannst du auf die Counter-Variable verzichten. MfG, Jens</div> Großes Array macht probleme - jg - 22.09.2006 15:59 <div align="left">Hallo, Michael, habe mir gerade nochmal dein VI angesehen, du hast da noch einen Riesenbug: Das Array muss natürlich per Shift-Register durch deine While-Schleife geschoben werden. So werden dauernd Kopien angelegt, und nur deine letzte Änderung wird gespeichert. Anbei meine Änderungen (lief in unter 20 ms durch!): [attachment=3370] [attachment=3371] MfG, Jens Edit: P.S.: Und ich empfehle, wie immer, dringend ein Update auf Version 8.0.1</div> Großes Array macht probleme - joedoe1979 - 22.09.2006 16:26 Danke :-) Diesen Bug habe ich nicht bemerkt, deshalb wurde das System auch so langsam. Nun funktioniert es richtig. Die einfache Lösung ist wie so oft die Beste :-) Großes Array macht probleme - joedoe1979 - 22.09.2006 17:35 Ganz richtig funktioniert es noch nicht, denn es kommt alle 5 ms ein neuer Wert. Dieser soll dann in das Array eingetragen werden. Da das Programm 15ms benötigt, um einen Wert in das Array einzutragen ist dies viel zu langsam. Großes Array macht probleme - Lucki - 22.09.2006 18:54 ' schrieb:Ich habe mal das Beispielprogramm mit beigefügt.Das Beispielprogramm ist nicht nur langsam, sondern auch sinnlos: Das Ausgans-Array besteht nach wie vor aus lauter Nullen, lediglich das 360000ste Element enthält die Zahl 359999. Ich vermute mal, so war das nicht beabsichtigt. Großes Array macht probleme - jg - 22.09.2006 19:24 <div align="left">Hallo, Michael, also mein Beispielprogramm (s. Posting oben) braucht für das Schreiben deiner 360000 Werte ca. 18-20 ms, also 1 Wert wird in ca. 55 ps in das Array geschrieben! Und die Variante von Guenther ist nochmal ein Stück schneller. Etwas vereinfacht sieht das Demo-VI übrigens so aus: [attachment=3372] Dauer hier: ca. 11-12 ms @Lucki: Genau das hatte ich in meiner Meldung ja schon beschrieben. VI war wegen des vergessenen Shift-Registers so quälend langsam. MfG, Jens</div> Großes Array macht probleme - joedoe1979 - 22.09.2006 23:24 Ich hab einfach schon zu lange vorm Bildschrim gesessen. Aber warum ist denn das Teilarray ersetzen so langsam. Eigentlich sollte doch ein dynamisches Array mehr Probleme bereiten, da ein neuer Speicherplatz bereitgestellt werden muss. Die Teilarray ersetzen Funktion muss mal dringend überarbeitet werden. Noch mal vielen Dank |