INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.


Antwort schreiben 

Extrem langsamer Variablen Zugriff über Referenzen



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!

28.07.2022, 15:16
Beitrag #1

hajos118 Offline
LVF-Grünschnabel
*


Beiträge: 37
Registriert seit: Apr 2014

8.5, 8.6 ...
2008
DE

87549
Deutschland
Extrem langsamer Variablen Zugriff über Referenzen
Nachdem ich beim durchstöbern auf den Hinweis gestossen bin, dass Zugriffe auf Variablenwerte sehr langsam sein sollen, hab' ich ein kleines Testprogramm geschrieben und war entsetzt!
Der Zugriff mittel Referenz:Wert ist ca. um den Faktor 4000 langsamer als bei direktem Zugriff oder per lokaler Variable.
Ich hab' das Testprogramm mal angehängt (Labview 2021).
Vielleicht kann mir jemand das Ergebniss bestätigen?


Angehängte Datei(en)
21.0 .vi  Zugriffstest_Vergleich.vi (Größe: 22,03 KB / Downloads: 150)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
28.07.2022, 15:40 (Dieser Beitrag wurde zuletzt bearbeitet: 28.07.2022 15:57 von GerdW.)
Beitrag #2

GerdW Offline
______________
LVF-Team

Beiträge: 17.480
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: Extrem langsamer Variablen Zugriff über Referenzen
Hallo Hajo,

ich kann bestätigen, dass Property Nodes sehr langsam sind...

Zu deinem VI kann ich nichts sagen, da du mit LV2021 arbeitest. Wenn du es aber in LV2020 bereitstellen könntest!?

Wo genau nimmst du deine Behauptung her? Quellen?

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
28.07.2022, 16:01
Beitrag #3

hajos118 Offline
LVF-Grünschnabel
*


Beiträge: 37
Registriert seit: Apr 2014

8.5, 8.6 ...
2008
DE

87549
Deutschland
RE: Extrem langsamer Variablen Zugriff über Referenzen
Hallo Gerd,

der Faktor wird bei meinem Testprogramm berechnet.
Version LV2020 hab' ich angehängt.


Angehängte Datei(en)
20.0 .vi  Zugriffstest_Vergleich.vi (Größe: 15,25 KB / Downloads: 138)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
28.07.2022, 16:13 (Dieser Beitrag wurde zuletzt bearbeitet: 28.07.2022 16:17 von GerdW.)
Beitrag #4

GerdW Offline
______________
LVF-Team

Beiträge: 17.480
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: Extrem langsamer Variablen Zugriff über Referenzen
Hallo Hajo,

danke fürs Konvertieren!

Ja, lokale Variablen sind schnell - sonlange es sich um skalare Werte handelt.
Wenn du aber anfängst mit größeren Arrays zu hantieren, kann sich der Aufwand für den Memorymanager schon deutlicher bemerkbar machen: lokale Variablen erfordern (fast) immer Kopien des Werts des FP-Elements!

Das gleiche gilt auch für globale Variablen: sie sind schnell und haben die gleichen Probleme wie lokale Variablen.

PropertyNodes sind im Vergleich dazu (extrem) langsam, weshalb man sie nicht als schnöden Ersatz für lokale Variablen (d.h. Property "Value") verwenden soll. Es gibt aber legitime Einsatzzwecke, die aber trotzdem nicht in einer auf Geschwindigkeit getrimmten Schleife erfolgen sollten!
(Außerdem gibt es da noch die FP-Property DeferFPUpdates, das beschleunigt die PropertyNodes immerhin um den Faktor 3 in deinem VI…)

Es gibt außerdem auch noch SharedVariables in LabVIEW, die ebenfalls nicht auf Geschwindigkeit getrimmt sind.

Alle Konstrukte/Optionen haben ihre Einsatzzwecke, und dafür kann/sollte man sie nutzen!

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
28.07.2022, 19:21 (Dieser Beitrag wurde zuletzt bearbeitet: 28.07.2022 19:22 von BNT.)
Beitrag #5

BNT Offline
LVF-Freak
****


Beiträge: 744
Registriert seit: Aug 2008

5.0 - 22Q3
1999
EN

64291
Deutschland
RE: Extrem langsamer Variablen Zugriff über Referenzen
Diese Beobachtung ist ein alter Hut.
Der Grund dafür ist die notwendige Kommunikation zwischen zwei Threads, dem Bockdiagramm-Thread und dem Frontpanel/UI-Thread.

Zum Hintergrund: LABVIEW implementiert das Datenfluss-Paradigma. In LabVIEW gibt es KEINE Variablen! Es gibt nur Datenquellen und Datensenken. An Drahtabzweigen werden potentiell Kopien der Drahtinhalte erzeugt. Deshalb ist LabVIEW thread-save und kann Code-Segmente gefahrlos paralelisieren. Auch lokale oder globale Variablen sind keine, sondern Speichersegmente, die von der LabVIEW Runtime-Engine asynchron abgeglichen werden. Geschrieben wird an das Original, gelesen wird von Speicherkopien. Das ist eine häufige Ursache von Race-Conditions.

Je besser Du den Datenfluss verinnerlichst und konsequent anwendest, zusammen mit den bekannten Ereignissmechanismen, Queue, Notifier, User Defined Events etc., desto effizienter und performanter werden Deine LabVIEW Programme.

Gruß Holger

NI Alliance Partner & LabVIEW Champion
GnuPG Key: 6C077E71, refer to http://www.gnupg.org for details.
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
29.07.2022, 07:49
Beitrag #6

Kiesch Offline
LVF-Stammgast
***


Beiträge: 415
Registriert seit: Mar 2009

2019, 2018, 2016
2009
DE

04519
Deutschland
RE: Extrem langsamer Variablen Zugriff über Referenzen
Verständnisfrage, da ich nur 2019 habe:
Bei den Property Nodes ist es für die Laufzeit uninteressant ob ich mir eine spezifische nehme (ohne Referenzeingang) oder eine in die ich die Referenz reingebe um das FP zu addressieren?

Grundsätzlich arbeite ich gerne mit Value (signaling) um nur die Programmreaktionen auf Userinteraktionen ausprogrammieren zu müssen und wenn sich die ändern sollen nicht zwei Teile im Code ersetzen zu müssen. Man könnte das natürlich mit einer Queue koppeln die das eigentliche Event weiterreicht zur Abarbeitung, so dass man statt "Value (signaling)" einfach direkt in die Queue schreiben kann. macht das den Code deutlich schneller? Zumindest die FP Interaktion entfällt dabei ja wenn die Aktionen aus dem Blockdiagram kommen.

Gruß Kiesch

P.S: In welcher Größenordnung der Laufzeit bewegen wir uns? µs für den Property Node Zugriff? Das wäre für mich in fast allen Fällen in denen ich die einsetze nicht relevant.

Zitat:Märchen und Geschichten werden erzählt am Lagerfeuer, technischen Fakten werden mitgeteilt (oder so). (Genauso wie Software nicht auf einem Server "herumliegt", die ist dort installiert.)
*Zitat: IchSelbst*
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
29.07.2022, 08:19
Beitrag #7

hajos118 Offline
LVF-Grünschnabel
*


Beiträge: 37
Registriert seit: Apr 2014

8.5, 8.6 ...
2008
DE

87549
Deutschland
RE: Extrem langsamer Variablen Zugriff über Referenzen
Danke an Holger und Gerd für die Erklärungen. Hilft mir wieder etwas mehr im Verständniss.
@Holger: Mich hat der Faktor 4000 erschreckt. Die Beobachtung "viel langsamer" und "extrem lahm" ect. war zu schwammig, daher hab' ich mir mal das o.g. Texstprogramm gebastelt um konkretere Daten präsentieren zu können (wenn ich andere Programmierer von "meinem" Stil überzeugen möchte).

Zu meiner Motivation:
Wir programmieren Dauerlaufprüfstände, welche für einzelne Messungen bis zu 4 Wochen laufen müssen. Dabei werden Datenpakete im zweistelligen kB Bereich pro sekunde abgerufen und auf Grenzen, Nulldurchgänge ect. überprüft. Hier machen sich schnelle Zugriffe auf Einzelwerte durchaus bemerkbar. Verluste von Messungen werden aber erst nach 4 Wochen bemerkt, damit dann Änderungen vorgenommen werden können.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
30.07.2022, 14:55
Beitrag #8

BNT Offline
LVF-Freak
****


Beiträge: 744
Registriert seit: Aug 2008

5.0 - 22Q3
1999
EN

64291
Deutschland
RE: Extrem langsamer Variablen Zugriff über Referenzen
"Verluste von Messungen werden aber erst nach 4 Wochen bemerkt,..."

Und wenn Daten fehlen? Muss die Messung dann wiederholt werden? Ernsthaft? Es werden keine periodischen Checks auf Vollständigkeit und Qualität durchgeführt?

Das kann ich kaum glauben.

Gruß Holger

NI Alliance Partner & LabVIEW Champion
GnuPG Key: 6C077E71, refer to http://www.gnupg.org for details.
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
30.07.2022, 15:34 (Dieser Beitrag wurde zuletzt bearbeitet: 30.07.2022 15:35 von BNT.)
Beitrag #9

BNT Offline
LVF-Freak
****


Beiträge: 744
Registriert seit: Aug 2008

5.0 - 22Q3
1999
EN

64291
Deutschland
RE: Extrem langsamer Variablen Zugriff über Referenzen
"Value (signaling)"
Sieh Dir mal die Beispiele zu User Defined Events an.

Gruß Holger

NI Alliance Partner & LabVIEW Champion
GnuPG Key: 6C077E71, refer to http://www.gnupg.org for details.
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
01.08.2022, 08:02
Beitrag #10

hajos118 Offline
LVF-Grünschnabel
*


Beiträge: 37
Registriert seit: Apr 2014

8.5, 8.6 ...
2008
DE

87549
Deutschland
RE: Extrem langsamer Variablen Zugriff über Referenzen
(30.07.2022 14:55 )BNT schrieb:  "Verluste von Messungen werden aber erst nach 4 Wochen bemerkt,..."

Und wenn Daten fehlen? Muss die Messung dann wiederholt werden? Ernsthaft? Es werden keine periodischen Checks auf Vollständigkeit und Qualität durchgeführt?

Das kann ich kaum glauben.

Gruß Holger
Die Auswertung erfolgt nach der Messung. Online können nur einfache Kriterien aufgenommen werden, wie z.B. ein erwarteter Nulldurchgang und die Anzahl der Messungen pro erkanntem Zyklus.
Detaillierte Auswertungen (z.B. Fourrieranalyse, Phasensprünge, sprunghafter Versatz des Messniveau) werden dann über ca. 5 Mio Zyklen gemacht und über eine 3-Dim Auswertung dargestellt. Erst dort werden dann kritische Fehler erkannt.
Die Messung wird auch zur Dokumentation und Langzeitstabilität des Endprodukts benötigt und pro Fertigungslos einmal durchgeführt.
Es werden auch nicht alle Zyklen im Protokoll dargestellt, sondern, wenn alle "einfachen" Grenzen eingehalten werden, nur periodisch einzelne Zyklen. Es muss jedoch gewährleistet sein, dass kein Messwert vorgegebene Grenzen verletzt - also jeder Messpunkt zählt!

... und es ist tatsächlich so, dass eine Fehlmessung eine Wiederholung notwendig macht. Beim Endprodukt handelt es sich um äusserst hochwertige Komponenten, die im real Life Betrieb mehrere Millionen Zyklen zuverlässig innerhalb der garantierten Parameter hinter sich bringen müssen.

Periodische Checks auf Vollständigkeit sind wegen mechanischen Ungenauigkeiten und nicht-linearitäten nur unzuverlässig und deshalb wenig aussagekräftig.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Antwort schreiben 


Möglicherweise verwandte Themen...
Themen Verfasser Antworten Views Letzter Beitrag
  Muss man Referenzen von controls überhaupt schließen? dimitri84 4 4.287 21.04.2022 11:57
Letzter Beitrag: dimitri84
  Referenzen in mehreren Bibliotheken aktualisieren seuk 3 4.031 12.09.2019 09:10
Letzter Beitrag: IchSelbst
  Cluster mit Referenzen auf FP-Elemente Oli_N 8 9.126 15.02.2017 11:19
Letzter Beitrag: Oli_N
  Frage zu Referenzen maxxillian 1 4.099 21.10.2016 08:04
Letzter Beitrag: GerdW
  Alternative zu Referenzen moTo 2 4.217 26.04.2016 18:16
Letzter Beitrag: moTo
  extrem lange Windows Startdauer nach RTE + DAQ installation I3erry 1 3.269 11.11.2015 14:47
Letzter Beitrag: jg

Gehe zu: