14.12.2007, 09:08
Beitrag #1
|
Lucc
LVF-Grünschnabel
Beiträge: 32
Registriert seit: Oct 2007
8.00
2007
kA
77709
Deutschland
|
Was für Nachteile haben Lokale Variablen
Hallo Leute,
meinem VI hat einige Lokale Variable, nun hab ich gehört, dass man diese nicht so oft benutzen soll.
Könnte Ihr mir sagen wieso!
MfG
Markus Cavallucci
|
|
|
14.12.2007, 09:27
Beitrag #2
|
s200rs
LVF-Gelegenheitsschreiber
Beiträge: 75
Registriert seit: Jul 2005
7.1 / 8.5.1
2002
DE
02826
Deutschland
|
Was für Nachteile haben Lokale Variablen
Hallo,
das einzige, was ich dazu weiß ist, daß man die Verwendung von lokalen Variablen vermeiden sollte und statt dessen die Ausgänge von Sub-VIs wieder mit den Eingängen der nachfolgenden verbindet, bzw. im gleichen Atemzug auch die Verwendung von Sequenzen vermeidet (wo man dann im nachfolgenden Fenster wieder eine lokale Variable vom gleichen Objekt wie in einem vorhergehenden verwenden würde).
Ziel des ganzen ist, daß der Daten- bzw. Signalfluß erhalten und übersichtlicher bleibt.
Ob das ganze auch noch irgendwelche programmtechnische Hintergründe hat, wie z.B. Speicherbedarf etc., kann ich leider nicht sagen.
Gruß Andreas
________________
LV 7.1; 8.5
|
|
|
14.12.2007, 09:40
Beitrag #3
|
weesnich
LVF-Grünschnabel
Beiträge: 37
Registriert seit: Dec 2007
8.2
2007
kA
7XXXX
Deutschland
|
Was für Nachteile haben Lokale Variablen
Also ich kenn mich ja mit LabVIEW noch nicht besonders aus, aber sonst kenne ich es das eine globale mehr Speicherplatz frisst als eine lokale, da die lokale erst initialisiert wird beim starten der Funktion etc.
Und was du meinst s200rs versteh ich nicht. lokale Variablen gelten doch gerade nur für ein VI, wieso sollte man die an ein weiteres VI abtreten anstatt eine globale zu verwenden? oder versteh ich da was komplett falsch?
gruß weesnichgenau
|
|
|
14.12.2007, 09:48
Beitrag #4
|
IchSelbst
LVF-Guru
Beiträge: 3.692
Registriert seit: Feb 2005
11, 14, 15, 17, 18
-
DE
97437
Deutschland
|
Was für Nachteile haben Lokale Variablen
Lokale Variablen benötigen Speicherplatz pro zu lesender Variablen. Wenn du also 27 Lokale Variablen hast, die gelesen werden sollen, so muss bei jedem Schreiben auf eine Lokale Variable - und beim Schreiben auf das Element - alles 28 mal gemacht werden. Ist die Variable ein aufwändiger Cluster oder gar ein Array, ist der Platzverbrauch entsprechend. Neben dem Speicherbedarf ist da natürlich auch noch die Prozessorzeit, die - meistens unnötigerweise - verbraucht wird. Wahrscheinlich (Wahrscheinlich deswegen, weil ich mir um solche Sachen eigentlich keine größeren Gedanken mache) ist das Beschreiben dieser Lokalen Variablen noch komplizierter, da sie auch noch in unterschiedlichen Prozessorthreads liegen können, was ein thread-übergreifendes Speicherzugriffs-Handling benötigt. Und das ist nicht ohne.
Für viel wichtiger halte ich aber das Argument der Datenflußsteuerung. LV ist datenflußgesteuert. Und das heißt nun mal: Wire, Wire, Wire (Datenleitung, Datenleitung, Datenleitung). Alles mit Sequenzierung (Datenfluß ist nichts anderes) zu machen erleichtert außerdem die Lesbarkeit - erheblich.
Das (übermäßige) Benutzen von Lokalen Variablen hat außerdem den Nachteil: Wer lokale Variablen benutzt, benutzt auch alle anderen "Features" und Programmier-Konstrukte, die eigenlich nicht in eine Datenflußsteuerung gehören.
Jeder, der zur wahren Erkenntnis hindurchdringen will, muss den Berg Schwierigkeit alleine erklimmen (Helen Keller).
|
|
|
14.12.2007, 09:53
Beitrag #5
|
IchSelbst
LVF-Guru
Beiträge: 3.692
Registriert seit: Feb 2005
11, 14, 15, 17, 18
-
DE
97437
Deutschland
|
Was für Nachteile haben Lokale Variablen
' schrieb:Und was du meinst s200rs versteh ich nicht. lokale Variablen gelten doch gerade nur für ein VI, wieso sollte man die an ein weiteres VI abtreten anstatt eine globale zu verwenden? oder versteh ich da was komplett falsch?
Nein, komplett falsch nicht.
Er meint ja (wahrscheinlich): Anstelle vom VI heraus in eine Lokale Variable schreiben, die dann selbst wieder als Eingang auf ein anderes VI geht, kann man gleich die beiden VIs verbinden, sodass mal die Lokale Variable (und demzufolge auch das Element, was hierfür notwendig ist) gar nicht braucht.
Im übrigen bin ich der Meinung, dass globale Variablen noch schlimmer sind als lokale.
Jeder, der zur wahren Erkenntnis hindurchdringen will, muss den Berg Schwierigkeit alleine erklimmen (Helen Keller).
|
|
|
14.12.2007, 10:26
Beitrag #6
|
weesnich
LVF-Grünschnabel
Beiträge: 37
Registriert seit: Dec 2007
8.2
2007
kA
7XXXX
Deutschland
|
Was für Nachteile haben Lokale Variablen
Bei LabVIEW habe ich bisher beide auch gar keine gebrauchen können, wo das bei Programmiersprachen absolut unumgänglich war.
Poste doch mal dein VI, vielleicht lassen die Variablen sich einfach vermeiden und das Thema ist gegessen ^^
|
|
|
14.12.2007, 11:50
Beitrag #7
|
|
|
14.12.2007, 12:23
Beitrag #8
|
jg
CLA & CLED
Beiträge: 15.864
Registriert seit: Jun 2005
20xx / 8.x
1999
EN
Franken...
Deutschland
|
Was für Nachteile haben Lokale Variablen
Wer die erhabene Weisheit der Mathematik tadelt, nährt sich von Verwirrung. (Leonardo da Vinci)
!! BITTE !! stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort!
Einführende Links zu LabVIEW, s. GerdWs Signatur.
|
|
|
14.12.2007, 12:53
Beitrag #9
|
s200rs
LVF-Gelegenheitsschreiber
Beiträge: 75
Registriert seit: Jul 2005
7.1 / 8.5.1
2002
DE
02826
Deutschland
|
Was für Nachteile haben Lokale Variablen
' schrieb:Anstelle vom VI heraus in eine Lokale Variable schreiben, die dann selbst wieder als Eingang auf ein anderes VI geht, kann man gleich die beiden VIs verbinden, sodass mal die Lokale Variable (und demzufolge auch das Element, was hierfür notwendig ist) gar nicht braucht.
Im übrigen bin ich der Meinung, dass globale Variablen noch schlimmer sind als lokale.
@ weesnich, IchSelbst,
genau:
Habe mich da bißl schwer verständlich ausgedrückt , aber ich meine genau das, was IchSelbst geschrieben hat.
Als LV-Anfänger habe ich fast nur mit lokalen Variablen gearbeitet, macht sich aber u.a. schwierig bei der Fehlersuche, oder beim Verstehen von schlecht dokumentierten VIs.
und nochmal "genau:" :
Ich denke auch, daß globale Variablen schlimmer sind als lokale, ich verwende mittlerweile keine mehr.
________________
LV 7.1; 8.5
|
|
|
14.12.2007, 14:04
|
IchSelbst
LVF-Guru
Beiträge: 3.692
Registriert seit: Feb 2005
11, 14, 15, 17, 18
-
DE
97437
Deutschland
|
Was für Nachteile haben Lokale Variablen
' schrieb:Aus SoftwareQS-Sicht ist eine Lose Kopplung anzustreben.
Oliver Frank hat das sehr schön und kurz und knapp ausgedrückt.
Da will ich doch gleich noch was zu schreiben:
Die Funktionsfähigkeit eines Softwareprogrammes (SP) ist nicht zwangsläufig das wichtigste Kriterium, wie ein SP zu schreiben ist. Von Standpunkt der Funktionsfähigkeit aus gesehen, habe ich gar kein Problem mit lokalen und auch nicht mit globalen Variablen (LV kann das und soll das auch machen). Viel wichtiger ist heutezutage aber die Wiederverwendbarkeit sowie die Debugfähigkeit eines SP. Wiederverwendbarkeit bedeutet: Ich nehme ein Modul aus einem SP heraus und baue es in ein anderes SP ein. Wenn der Auswand der Intergration des Modules gegen Null geht oder nur sehr klein ist, ist das Modul gut und auch das (andere) SP. Hat das Modul aber nun globale (aber auch mit lokalen würde das so sein) Variablen, so muss in dem anderen SP auch die Variable (Anzeige- oder Bedienelement) ergänzt werden. Das kann einfach aber auch bis hin zu unmöglich sein: Was tun, wenn es in den neuen SP bereits ein Element gleichen Names gibt? Kommt es in dem neuen SP zu RaceConditions bei Verwendung der Variablen? etc.
Um noch mal die Worte von Oliver Frank zu bemühen: Je loser die Kopplung, desto besser. Je mehr lokale/globale Variablen, desto fester die Kopplung.
Im übrigen gilt das mit der Kopplung nicht nur für datenfluß-orientierte Programmiersprachen sondern auch für strukturierte und objektorientierte.
Zitat:Lokale- und ganz besonders Globale Variablen verleiten nun aber einmal dazu die Lose Kopplung aufzubrechen.
Wenn das mit dem Verleiten halt nicht immer so schön wäre ... (Überlegt euch mal es gäbe in LV noch einen goto. Ja, selbst der wird noch bei objektorientiert benutzt.)
Jeder, der zur wahren Erkenntnis hindurchdringen will, muss den Berg Schwierigkeit alleine erklimmen (Helen Keller).
|
|
|
| |