LabVIEWForum.de
Arrays effizent benutzen - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein)
+--- Thema: Arrays effizent benutzen (/Thread-Arrays-effizent-benutzen)



Arrays effizent benutzen - pumpkin0 - 16.06.2010 11:35

Moien,

ich hätte da ein kleineres Problem mit der Performance. Ich habe eine While-Schleife in der alle 5ms Werte (Warten bis zum nächsten Vielfachen) aus einem DAQmx Task empfangen werden. Aus der Schleife kommt ein autoindexierter Tunnel, also ein Array mit den Messwerten. Abbruch ist angelegt per Button.

Scheinbar mag LabVIEW diesen Aufbau nicht wirklich. Ohne Tunnel läuft das ganze problemlos. Mit dem Tunnel hat die exe Aussetzer: es sind dann nicht 5ms sondern meistens 30 - 45ms.

Meine Vermutung ist dass die Erweiterung des Array bei jedem Schleifendurchlauf das Problem ist (Ich kenne mich eher mit den klassischen Sprachen aus, da wäre es garantiert ein Problem). LabVIEW kann ja nicht wissen wie lange das ganze laufen wird (typischerweise sind es 5.000 - 15.000 Werte). Mit einem vorallokierten Array, lokalen Variablen und Teilarray-ersetzen-durch wird es eher schlimmer.

Also ... wie macht man das richtig?

Danke


Arrays effizent benutzen - GerdW - 16.06.2010 11:39

Hallo pumpkin,

"Meine Vermutung ist dass die Erweiterung des Array bei jedem Schleifendurchlauf das Problem ist"
Korrekt.

"Mit einem vorallokierten Array, lokalen Variablen und Teilarray-ersetzen-durch wird es eher schlimmer."
Das Problem bei dieser Vorgehensweise ist die lokale Variable (biste nebenberuflich C-Programmierer? Think Dataflow!). Verwende hier bitte ein Shiftregister und schon "wuppt" dein VI...

Im nächsten Entwicklungsschritt schaust du dir bitte Producer-Consumer-Strukturen an. Bitte danach in den LV Examples suchen...

Edit: Und guckst du hier im "Month of Webcast" (wird ja hinreichend hier im Forum beworbenSmile)