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 

LVOOP - wann wird Kopie erstellt?



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!

20.10.2011, 14:19
Beitrag #1

Kiesch Offline
LVF-Stammgast
***


Beiträge: 415
Registriert seit: Mar 2009

2019, 2018, 2016
2009
DE

04519
Deutschland
LVOOP - wann wird Kopie erstellt?
Ich hab zwar schon ein wenig Erfahrung mit LV aber noch nicht besonders viel mit LVOOP. Auch OOP glaube ich generell verstanden zu haben ^^
Was mich allerdings beschäftigt (weil ich beim lesen von Threads zu LVOOP drauf gestoßen bin):

Wann genau erstellt Labview Kopien von Objekten? Es gibt ja eine by Value Syntax, was ja an sich grundsätzlich kein Nachteil ist (man kann sehr schnell aus einem Objekt zwei verschiedene machen wenn man es braucht), allerdings stellt sich für mich dann die Frage, wann genau wirklich Kopien erzeugt werden.
Bei Verzweigungen muss das ja notwendigerweise passieren, allerdings habe ich aus den anderen Threads (schon etwas ältere) zwischen den Zeilen herausgelesen, dass auch bei der Übergabe an ein SubVI eine Kopie erzeugt wird. Ist das (immer noch?) richtig?
Ich dachte bisher immer Labview geht sparsam mit Kopien um und macht die nur wenn "notwendig" (also bei Verzeigungen).

Gruß Kiesch

P.S: Konkret stellt sich die Frage, da natürlich Objekte mit Objekten als Attributen schnell sehr "groß" werden können und ich nicht mein ganzes aktuell funktionierendes Programm nach OO umstelle, nur um dann festzustellen, dass das so nicht vernünftig funktioniert....

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
20.10.2011, 15:23
Beitrag #2

BNT Offline
LVF-Freak
****


Beiträge: 744
Registriert seit: Aug 2008

5.0 - 22Q3
1999
EN

64291
Deutschland
RE: LVOOP - wann wird Kopie erstellt?
Hi Kiesch
im Prinzip liegst Du richtig. In dem folgenden Link wird etwas über das Memory Management von LVOOP Objekten geschrieben: The Decisions behind the Design. Und hier etwas zum Compiler: LabVIEW Compiler under the Hood.

Ich denke der Compiler ist im Laufe der Zeit ziemlich schlau geworden. Ich benutze LVOOP Objekte wie Typedefinitionen und habe dabei bisher keine Speicher- oder Laufzeitprobleme entdecken können.

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
20.10.2011, 17:06 (Dieser Beitrag wurde zuletzt bearbeitet: 20.10.2011 17:06 von abrissbirne.)
Beitrag #3

abrissbirne Offline
LVF-Stammgast
***


Beiträge: 480
Registriert seit: Aug 2007

LV2009, LV2010
2007
EN

66123
Deutschland
RE: LVOOP - wann wird Kopie erstellt?
Ich habe irgendwo in den Tiefen der LabVIEW Hilfe gelesen, dass LabVIEW nur Kopien bei Übergabe an ein Sub VI macht wenn das entsprechende Control innerhalb irgendeiner Struktur, Schleife ect. des Sub VIs liegt. Deshalb sollte man die Controls und Indocators immer auf die sogenannte BlockDiagram Root, also außerhalb jeder Struktur, legen.

Edit:
Ach ja und natürlich das FP des Sub VI nicht anzeigen.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
21.10.2011, 08:05
Beitrag #4

BNT Offline
LVF-Freak
****


Beiträge: 744
Registriert seit: Aug 2008

5.0 - 22Q3
1999
EN

64291
Deutschland
RE: LVOOP - wann wird Kopie erstellt?
Moin

LVOOP Kontrollen & Indikatoren sollten auf dem Frontpanel nichts ausmachen, da die Attribute privat sind. Dort sollte nur der Verweis auf die Objektdaten gespeichert sein. Sonst ist Deine Aussage natürlich richtig.

Wenn man den Ein- und Ausgäng eines SubVIs, speziell den Objektdraht, in einem Shift-Register festhält, sollte beim Call-By-Value auch nicht notwendig eine Objektkopie angelegt werden, sondern nur wenn es das subVI notwendig erfordert, bzw. der Objektdraht zusätzlich an dem subVI vorbei in ein anderes subVI verdrahtet wird. Und auch dann nur, wenn in beiden subVIs das Objekt geändert wird. Der Compiler denkt da ziemlich tiefgehend drüber nach.

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
21.10.2011, 09:40
Beitrag #5

Kiesch Offline
LVF-Stammgast
***


Beiträge: 415
Registriert seit: Mar 2009

2019, 2018, 2016
2009
DE

04519
Deutschland
RE: LVOOP - wann wird Kopie erstellt?
Okay, heist: Auch Lesezugriffe erzwingen keine Objektkopien?


Noch eine Frage:

"Bauartbedingt" kann man ja in Labview kein klassisches build durchführen. Das heist also Datenkonsistenz (bei der Erstellung) erzwingt man nur durch die Option Standardwert (für Objekteigenschaften) setzen? Und natürlich in den Zugriffsprozeduren...

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
21.10.2011, 10:23
Beitrag #6

BNT Offline
LVF-Freak
****


Beiträge: 744
Registriert seit: Aug 2008

5.0 - 22Q3
1999
EN

64291
Deutschland
RE: LVOOP - wann wird Kopie erstellt?
(21.10.2011 09:40 )Kiesch schrieb:  Okay, heist: Auch Lesezugriffe erzwingen keine Objektkopien?
Genau, es wird nur der Speicher für die gelesenen Attribute angelegt.

(21.10.2011 09:40 )Kiesch schrieb:  Noch eine Frage:

"Bauartbedingt" kann man ja in Labview kein klassisches build durchführen. Das heist also Datenkonsistenz (bei der Erstellung) erzwingt man nur durch die Option Standardwert (für Objekteigenschaften) setzen? Und natürlich in den Zugriffsprozeduren...
Selbstverständlich kann man aus LabVIEW-VIs Executables erzeugen. Dafür benötigt man den Application-Builder, der in der Professional-Version enthalten ist.

Datenkonsitenz? Wenn ein LabVIEW-VI direkt gestartet wird, kopiert es die Werte der Kontrollen auf die Datenquellen im Blockdiagramm. Wenn es als SubVI aufgerufen wird, werden die Daten Eingangsdaten des aufrufenden VIs als Datenquelle im Blockdiagramm benutzt.

Die Attribute von LVOOP-Objekten sind privat. Daher werden beim direkten Start eines VI die Werte des Frontpanel-Elements benutzt, das in diesem Fall die Default-Werte enthält.

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
Anzeige
21.10.2011, 12:00
Beitrag #7

Kiesch Offline
LVF-Stammgast
***


Beiträge: 415
Registriert seit: Mar 2009

2019, 2018, 2016
2009
DE

04519
Deutschland
RE: LVOOP - wann wird Kopie erstellt?
Sorry, Missverständnis, mir ging es um den "klassischen" Konstruktor, der ja (auch) dazu dient Datenkonsistenz (im Sinne von zusätzlichen Einschränkungen des Wertebereichs) innerhalb des Objekts sicherzustellen. *Zum Beispiel festzulegen, dass nur die Zahlen von -10 bis 10 gültige Attributwerte sind (oder ähnliches, komplexeres).

Hat sich von LV 2010 zu LV 2011 maßgeblich was an den Möglichkeiten bei LVOOP getan? Überlege nämlich gerade auch ob ich vielleicht updaten sollte.

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
21.10.2011, 14:23
Beitrag #8

Kiesch Offline
LVF-Stammgast
***


Beiträge: 415
Registriert seit: Mar 2009

2019, 2018, 2016
2009
DE

04519
Deutschland
RE: LVOOP - wann wird Kopie erstellt?
Kann leider schon nicht mehr bearbeiten:

2 Sachen:

1. vielleicht kann mal jemand den Titel in "Allgemeine Regeln zum Programmieren mit LVOOP" oder so ändern, da ich

2. noch eine Frage habe die nur noch am Rande mit dem Ausgangsproblem zu tun hat:

Ist es sinnvoll Setter und Getter Methoden festzulegen und dann auf die Objekteigenschaften über den Eigenschaftsknoten zuzugreifen? Soweit ich das verstanden habe werden ja dabei nur die Setter und Getter ausgeführt (samt selbst implementietem Fehlerbehandlung)?
Mit der Variante kann man nämlich (meiner Meinung nach) "natürlicher" Labview programmieren ohne ständiges unbundle, auslesen, modifizieren etc. Oder gibt es dabei noch andere Nachteile?

Ist es außerdem möglich den Methodenknoten auf Klassen zu benutzen? (wenn ich einfach anschließe meckert er, dass er ne Referenz erwartet und kein Klassenobjekt)

Gruß Kiesch

P.S: Schönes Wochenende

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
Antwort schreiben 


Möglicherweise verwandte Themen...
Themen Verfasser Antworten Views Letzter Beitrag
  CS++ - A LVOOP Actor based Framework BNT 18 30.481 14.03.2015 14:26
Letzter Beitrag: BNT
  LVOOP und DAQmx - Resource ist reserviert Sundypha 2 10.472 13.08.2012 12:42
Letzter Beitrag: Sundypha
  Neuling, was bringen mir Klassen, LVOOP dali4u 6 18.493 24.02.2012 13:40
Letzter Beitrag: Kiesch
Information LVOOP-Anfänger, Kommentar zu Programm Martin Heller 11 25.399 09.03.2011 14:32
Letzter Beitrag: Martin Heller
  LVOOP im Kommen! abrissbirne 49 78.675 02.11.2010 16:50
Letzter Beitrag: BNT
  LVOOP-Beispiel - Stimmt das so? Matze 12 26.738 29.06.2010 13:14
Letzter Beitrag: jg

Gehe zu: