LabVIEWForum.de
Queues oder Melder mit Variant Daten - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein)
+--- Thema: Queues oder Melder mit Variant Daten (/Thread-Queues-oder-Melder-mit-Variant-Daten)



Queues oder Melder mit Variant Daten - J_uri - 24.04.2009 12:13

Hallo zusammen,

ich habe gelesen, dass man bei Queues am besten einen Cluster aus Enum-Steuerelement und Variant-Daten verwenden soll, da das sehr multifunktionell ist. Das stimmt natürlich, nur frage ich mich, ob das stets notwendige Konvertieren der Daten aus Variant nicht zu Performanceeinbußen führt. Schließlich ist bei jedem Schreiben und Lesen des Clusters eine zusätzliche Operation notwendig. Das mag bei selten verwendeten Queues nicht so gravierend sein, aber wenn ich bspw. eine Datenerfassung mit hoher Abtastrate programmiere und die Daten über eine solche Queue übertrage kann ich mir schon vorstellen, dass es sich bemerkbar macht.

Kann mir da jemand zustimmen? Oder ist die Daten-zu-Variant-Funktion (und umgekehrt) so systemoptimiert, dass sie zu keiner nennenswerten Zusatzbelastung führt?

MfG
J_uri


Queues oder Melder mit Variant Daten - schrotti - 24.04.2009 13:42

Die von dir beschriebene Queue benutze ich auch, allerdings nur, um Kommandos mit optionalen Parametern zu versenden. Der Datentransfer läuft bei mir immer im nativen Datentyp der Messdaten.

In einem meiner Prüfstände läuft eine Messkarte mit 8 Kanälen und 10kHz. Ich kann mir durchaus vorstellen, dass die Prozessorlast merklich steigt, wenn ich alles in Variant und wieder zurückwandle.


Queues oder Melder mit Variant Daten - IchSelbst - 24.04.2009 13:49

' schrieb:aber wenn ich bspw. eine Datenerfassung mit hoher Abtastrate programmiere und die Daten über eine solche Queue übertrage kann ich mir schon vorstellen, dass es sich bemerkbar macht.
Wenn du nur alleine die Sampledaten per Queue verschicken willst, musst du ja nicht einen Variant nehmen. Nimm halt für die Sampledaten einfach eine eigene Queue mit 2DArrDBL.

Meistens verwende ich einen (verschachtelten) Cluster als Queue-Daten. Da können dann für jede Zielfunktion die entsprechenden Parameter drinnen stehen. Nur wenn dieser Cluster zu unübersichtlich wird, verwende ich Variant.

Ich halte den Overhead, der durch Variant entsteht, nicht für relevant.


Queues oder Melder mit Variant Daten - eg - 24.04.2009 15:31

Mach dir keine Sorge, es nimmt nich zu viel Performance. Ich nutze es überall mit vielen Abtastungen (zuletzt hatte ich 8 geräte mit bis zu 1000 Hz). Zwar nehme ich ENUM+String statt ENUM+Variant, da Variant nicht so verbreitet wie Binary String ist. Aber im Prinzip nimmt die Umwandlung der Daten nach Variant nicht viel mehr Performance, wie Flatten to String. Meine MeinungBig Grin


Queues oder Melder mit Variant Daten - Y-P - 25.04.2009 10:46

Mach Dir mit dem Umwandeln in Variant keine Sorgen. Wink
Das wird auf den Schulungen von NI auch so vermittelt und die müssen ja wissen, was sie machen. Big Grin

Gruß Markus


Queues oder Melder mit Variant Daten - Achim - 27.04.2009 06:11

' schrieb:Wenn du nur alleine die Sampledaten per Queue verschicken willst, musst du ja nicht einen Variant nehmen. Nimm halt für die Sampledaten einfach eine eigene Queue mit 2DArrDBL.

Ganz genau! Wenn du ja weißt, was du versenden willst...dann musst du doch nicht zwanghaft alles "flexibel" halten.

Und mal ehrlich: Wenn eine Anwendung mal steht, wie oft wird dann wirklich eine derartige Änderung notwendig, dass der bis dahin getätigte Aufwand, alles so flexibel zu halten, gerechtfertigt war?

Gruß
Achim


Queues oder Melder mit Variant Daten - cb - 27.04.2009 07:23

' schrieb:Zwar nehme ich ENUM+String statt ENUM+Variant, da Variant nicht so verbreitet wie Binary String ist. Aber im Prinzip nimmt die Umwandlung der Daten nach Variant nicht viel mehr Performance, wie Flatten to String. Meine MeinungBig Grin

Wobei Variant nochmal deutlich schneller als String ist, AQ hat dazu auf lava mal ein Statement abgelassen ...

aber wenn man jetzt nicht gerade schnelle Messdaten über so eine Queue streamt, dann wird man denke ich keinen Geschwindigkeits-Unterschied bemerken, und für das streamen von Messdaten würde ich dann sowieso eine Queue mit dem nativen Datentyl (DBL-Array, Waveform-Array, etc) verwenden ...


Queues oder Melder mit Variant Daten - joedoe1979 - 27.04.2009 12:32

10kHz ist doch nicht schnell Big Grin. Ich habe eine Datenerfassungskarte die mit 400MHz arbeitet :Pda bekomme ich immer graue Haare.


Queues oder Melder mit Variant Daten - eg - 27.04.2009 12:35

' schrieb:10kHz ist doch nicht schnell Big Grin. Ich habe eine Datenerfassungskarte die mit 400MHz arbeitet :Pda bekomme ich immer graue Haare.

Der Unterschied dabei ist, dass deine Karte die Daten in Array sammelt und dir das komplette Datenarray übergibt. Bei mir muss ich die Daten einzeln über serielle Schnittstelle auslesen. Das macht verdammt viel aus...


Queues oder Melder mit Variant Daten - joedoe1979 - 27.04.2009 14:37

Wieso wartest Du nicht bis z.B. 100 oder Messdaten im RS232 Speicher vorhanden sind, so das Du die alle mit einem mal auslesen kannst. Somit kannst Du eine Menge Zeit einsparren. Den RS232 Eingabepuffer kann man auch durch Eigenschaften vergrößern, so das 1 Million Datenpunkte reinpassen.

Es gibt aus RS232 USB Konverter die locker 250k anstelle von 115k baut schaffen. Die kazft man für 10€ steckt die einfach an den PC. Diese werden das als Comx erkannt und Du kannst die normalen Visa Funktionen benutzen. Nur muss Deine Gegenschnittstelle auch dieses Geschwindigkeit unterstützen.