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 

Eigenschaftsknoten (Wert) oder lokale Variable?



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!

18.08.2005, 21:59
Beitrag #1

rolfi Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 95
Registriert seit: Mar 2005



kA



Eigenschaftsknoten (Wert) oder lokale Variable?
Hi zusammen,

ich glaube im Forum gelesen zu haben (finde es leider nicht mehr), das eine lokale Variable einem Eigenschaftsknoten Wert dem Vorzug zu geben. Stimmt das so? - Wenn ja warum?
Betrifft das nur die Schreiben-Funktion oder auch Lesen?

Danke,
Rolf
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
19.08.2005, 06:10
Beitrag #2

Achimedes Offline
LVF-Freak
****


Beiträge: 544
Registriert seit: Aug 2005

2011
2001
DE

72461
Deutschland
Eigenschaftsknoten (Wert) oder lokale Variable?
Meines wissens nach sollte man dem Eigenschaftsknoten den vortritt geben sollte.

Weil:
-Jedesmal wen du eine Locale Variable benutzt, wird noch einmal für
diese speicher benutzt.Was vorallem bei großen Arrays viel Zeit und
Speicher braucht.

-Beim Eigenschaftsknoten greift mann immer auf den gleichen Speicher
zu.
So hat man mir es mal bei NI gesagt, als ich auf Kurs war.

Grüße
Achimedes
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
19.08.2005, 09:48
Beitrag #3

Oliver Listing Offline
LVF-Freak
****


Beiträge: 721
Registriert seit: Sep 2004

2012 und 2014 (Windows und Linux)
1998
EN

22844
Deutschland
Eigenschaftsknoten (Wert) oder lokale Variable?
Hi Achimedes,

der nachteil der Property Nodes (Eigenschaftsknoten) ist, das diese in dem Speicherbereich des Frontpanels abgelegt sind.
Dieser wird in einem anderen Thread verwaltet, als der Speicher des Diagramms. D.h. bei jedem Zugriff auf ein Frontpanelelement, wird eine gewisse Zeit benötigt, um darauf zuzugreifen.
Lokale und Globale Variablen liegen dagegen im gleichen Thread, wodurch der Zugriff wesentlich schneller ist.

Lokale und Globale Variablen erhöhen aber die Kopplung der einzelnden Funktionen untereinander und zerstören somit den i.a. Strukturierten Ansatz des Programms. Dies führt zu einer erschwerten lesbarkeit und wartbarkeit des Programms.
Uns hat man den Einsatz schon im Studium untersagt und bisher bin ich auch ohne ausgekommen.

Kommt es allerding allzusehr auf die Performance an, so will ich nicht abstreiten, das man alle guten Vorsätze mal beiseite legen muß.

Gruß
Oliver
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
19.08.2005, 10:21
Beitrag #4

IchSelbst Offline
LVF-Guru
*****


Beiträge: 3.696
Registriert seit: Feb 2005

11, 14, 15, 17, 18
-
DE

97437
Deutschland
Eigenschaftsknoten (Wert) oder lokale Variable?
Ich sehe das so:

Egal, ob ein Eigenschaftsknoten oder eine Variable benutzt wird - der jeweils erzeugte Datenfluß ist immer eine Kopie. Würde der Datenfluß (also die "Linie" im Blockdiagramm) eines Eigenschaftsknotens keine tatsächliche Kopie sein, sondern nur ein Pointer auf den Datenbereich, den das Bedien/Anzeige-Element hat, würde das angehängte Beispiel immer true geben, da der Pointer erst ausgeführt werden würde, wenn die Operation stattfindet.

Nachzufragen wäre noch wie groß die jeweilige Kopie ist und wie groß der Aufwand ist, die Kopie zu erstellen.

Den Vorteil eines Eigenschaftsknotens sehe ich in der Tatsache, dass er sequenziert werden kann/muss. Es ist also eindeutig festlegbar (ohne eine Sequenz zu benutzen), wann der Eigenschaftsknoten ausgeführt wird. Wann eine Variable abgearbeitet wird, ist nicht genau festlegbar (zumindest ist mir nicht bekannt, ob es festgelegt ist). Ein weiteres Problem besteht dann, wenn die Variable ein (verschachtelter) Cluster ist. Wenn z.B. in einer Dauerschleife nur eine einzige Variable innerhalb des Clusters bearbeitet werden soll, und dieser selbe Cluster auch innerhalb eines (eigenständigen) Eventknotens bearbeitet werden kann, dann kann es (muss aber nicht zwangsläufig) zu Problemen in der Dauerschleife kommen, wenn der Datenfluß des Clusters durch den Event unterbrochen wird. (ist mir nämlich so passiert, bis ich eingesehen habe, dass alle Datenflüsse Kopien sind).

Fazit:
Lieber nur Datenfluß mit Sequenz- und Schleifenvariablen etc. (ist nämlich nicht so fehleranfällig) als zuviele Knoten und Variablen. Ansonsten ziehe ich Variablen wegen der allgemeinen Lesbarkeit vor. Außerdem: Unterprogramme, Unterprogramme, Unterprogramme ...
Im übrigen bin ich der Meinung, dass ein Rechner leistungsstark genug sein muss, sodass es egal ist, ob ich Variablen oder Eigenschaftsknoten einsetzte.


Angehängte Datei(en)
Sonstige .vi  Test_DF.vi (Größe: 39,29 KB / Downloads: 364)

Jeder, der zur wahren Erkenntnis hindurchdringen will, muss den Berg Schwierigkeit alleine erklimmen (Helen Keller).
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
19.08.2005, 10:25
Beitrag #5

IchSelbst Offline
LVF-Guru
*****


Beiträge: 3.696
Registriert seit: Feb 2005

11, 14, 15, 17, 18
-
DE

97437
Deutschland
Eigenschaftsknoten (Wert) oder lokale Variable?
Oliver Frank schrieb:Dies führt zu einer erschwerten lesbarkeit und wartbarkeit des Programms.
Über erschwerte Wartbarkeit lass ich mit mir ja reden. Aber eine erschwerte Lesbarkeit kann ich nicht nachvollziehen.

Zitat:Kommt es allerding allzusehr auf die Performance an, so will ich nicht abstreiten, das man alle guten Vorsätze mal beiseite legen muß.
:respekt: (in Ermangelung eines Smiliys :DaumenHochSmile

Jeder, der zur wahren Erkenntnis hindurchdringen will, muss den Berg Schwierigkeit alleine erklimmen (Helen Keller).
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
20.08.2005, 00:26
Beitrag #6

Martin.Henz Offline
LVF-Team
LVF-Team

Beiträge: 429
Registriert seit: Jan 2005

2.5.1 bis 20
1992
kA

74363
Deutschland
Eigenschaftsknoten (Wert) oder lokale Variable?
IchSelbst schrieb:Egal, ob ein Eigenschaftsknoten oder eine Variable benutzt wird - der jeweils erzeugte Datenfluß ist immer eine Kopie. Würde der Datenfluß (also die "Linie" im Blockdiagramm) eines Eigenschaftsknotens keine tatsächliche Kopie sein, sondern nur ein Pointer auf den Datenbereich, den das Bedien/Anzeige-Element hat, würde das angehängte Beispiel immer true geben, da der Pointer erst ausgeführt werden würde, wenn die Operation stattfindet.

Ich glaube du hast da etwas nicht verstanden. Der Zugriff erfolgt so, wie das Oliver sehr schön beschrieben hat.

Hinterher soll/muss LabVIEW dann irgend etwas mit den Daten tun und dazu wird dann auch eine Kopie der Daten erzeugt. Der gleiche Vorgang (erzeugen einer Kopie) findet bei Verwendung einer lokalen Variable auch statt. Nur dass es bei einer lokalen Variablen noch die Kopie der lokalen Variable selbst gibt.

Wenn du von einem Anzeigelement 5 lokale Variablen im Diagram stehen hast, dann sind das von vorne herein schon einmal fünf Kopien. Bei Verwendung des Eigenschaftknotens hast du im Vergleich dazu keine Kopie.

Ob man nun lokale Variablen verwendet oder nicht hängt von den jeweiligen Umständen ab. Generell sollte zumindest für große Datenmengen keine lokale oder globalen Variablen verwendet werden. Und natürlich gilt dabei auch

Oliver Frank schrieb:Lokale und Globale Variablen erhöhen aber die Kopplung der einzelnden Funktionen untereinander und zerstören somit den i.a. Strukturierten Ansatz des Programms. Dies führt zu einer erschwerten lesbarkeit und wartbarkeit des Programms.
Uns hat man den Einsatz schon im Studium untersagt und bisher bin ich auch ohne ausgekommen.

Lokale Variablen werden i.d.R. asynchron in ein Anzeigeelement geschrieben, während das Schreiben mittels Eigenschaftsknoten synchron erfolgt. Bei einem sehr schnellen Wechsel des Dateninhalts macht die Verwendung von Eigenschaftsknoten nur begrenzt Sinn. Beispiel: Eine einfache For-Schleife mit N=100000 bei welcher der Schleifenzähler auf dem Front-Panel angezeigt werden soll. Das Ganze geht so schnell, dass das menschliche Auge der Änderung des Index sowieso nicht folgen kann. Die Verwendung eines Eigenschaftknotens bremst den ganzen Vorgang gewaltig aus und es macht nicht wirklich Sinn, das mit einem Eigenschaftknoten anzuzeigen.

Anders als wie in dem genannten Beispiel will der Anwender normalerweise auch etwas von dem sehen, was auf dem Bildschirm dargestellt werden soll. Wenn es also nur darum geht die Zeit bis zur Anzeige des neuen Wertes auf dem Front-Panel zu messen, dann dürfte es ziemlich egal sein, was verwendet wird. Ganz im Gegenteil: Hier stellt die Verwendung eines Eigenschaftsknotens im Extremfall sogar sicher, dass das, was angezeigt werden soll, auch tatsächlich auf dem Front-Panel zu sehen ist.

Oliver Frank schrieb:Kommt es allerding allzusehr auf die Performance an, so will ich nicht abstreiten, das man alle guten Vorsätze mal beiseite legen muß.

Mit Performance hat das zwar etwas zu tun, aber die Annahme "Hohe Performance = Lokale Variable" kann falsch oder richtig sein. Es kommt darauf an, was das Programm tun soll und was in diesem Zusammenhang die geeignetere Lösung ist.

Martin Henz
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
22.08.2005, 15:44
Beitrag #7

rolfi Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 95
Registriert seit: Mar 2005



kA



Eigenschaftsknoten (Wert) oder lokale Variable?
Hi,

Danke für die Erklärungen.

-Nicht so ganz einfach- Aber ich glaub ich hab die Unterschiede bzw. Verwendnungsvarianten begriffen.

lg,
rolf
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
  Eigenschaftsknoten in ein SubVI oder anders übersichtlicher machen Philipp_O 3 2.511 29.07.2022 07:42
Letzter Beitrag: Kiesch
  Lokale Variablen eliminieren / Signale Zusammenfassen Philipp841 8 5.222 30.09.2019 09:51
Letzter Beitrag: Philipp841
  Wie kann man Lokale Variablen sauber verpacken? Tobzn 10 7.801 04.03.2018 12:02
Letzter Beitrag: IchSelbst
  Lokale Variable galilio 5 4.852 09.02.2017 22:20
Letzter Beitrag: Trinitatis
  Wert an naheliegensten Wert aus Array anpassen TSC 17 11.521 26.07.2016 06:59
Letzter Beitrag: TSC
  Schleifenkommunikation: Melder und Benutzer-Ereignisse oder lokale Variablen lumaxo 7 6.464 19.03.2015 17:49
Letzter Beitrag: lumaxo

Gehe zu: