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 

Alternative zu geschachtelter for-Schleife



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!

22.04.2016, 07:20
Beitrag #1

koan Offline
LVF-Neueinsteiger


Beiträge: 5
Registriert seit: Apr 2016

LV 2013 SP1
-
kA



Alternative zu geschachtelter for-Schleife
Hallo zusammen,

zuerst einmal Danke an alle, die in diesem Forum fleißig die Fragen anderer beantworten. Mir hat das bisher schon sehr viel geholfen.

Nun zu meiner Frage:
In meiner Simulationsumgebung laufen alle Werte in einer funktionalen globalen Variable zusammen, die aus einem einzigen Cluster besteht.
Alle anderen VIs greifen auf diese FGV zu, darunter auch eine Art "Recorder" der die Werte zyklisch ausliest und in eine .csv-Datei speichert.
Allerdings schafft es der Recorder nicht, den vorgegeben Sollzyklus einzuhalten.
Bisher dachte ich, dass der Grund hierfür die Datei-IO-Operationen sind, es stellte sich aber heraus, dass das Problem ein Sub-VI des Recorders ist.

Dieses Sub-VI läuft über alle Werte der FGV und überführt diese in ein String-Array, dass dann in die .csv-Datei geschrieben wird.
Dabei liegt innerhalb der for-Schleife eine weitere for-Schleife, für den Fall, dass im Cluster der FGV weitere Cluster vorhanden sind.
Und ich denke hier liegt der Ursprung für die schlechte Performanz dieses VIs.

Gibt es zu dieser Struktur alternativen, die die Laufzeit des VIs verbessern?
Anbei noch ein Screenshot, zum hoffentlich besseren Verständnis.

Vielen Dank schon mal Big Grin


Angehängte Datei(en) Thumbnail(s)
   
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
22.04.2016, 07:35
Beitrag #2

GerdW Offline
______________
LVF-Team

Beiträge: 17.480
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: Alternative zu geschachtelter for-Schleife
Hallo koan,

so richtig ist mir nicht klar, warum du diesen Aufwand im subVI betreiben musst!

Ich verwende als Datenspeicher sehr gern Variant-Attribute, google doch einfach mal nach "LabVIEW red black tree"! Der erste Treffer sollte irgendwas mit "Darrens Nugget" sein, den dann aufmerksam lesen…

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
22.04.2016, 07:48
Beitrag #3

BNT Offline
LVF-Freak
****


Beiträge: 744
Registriert seit: Aug 2008

5.0 - 22Q3
1999
EN

64291
Deutschland
RE: Alternative zu geschachtelter for-Schleife
Der Performance-Killer ist der Zugriff auf die Daten über die Eigenschaftsknoten. Dazu ist nämlich ein Threadwechsel verbunden.
Versuch doch das VI Datenflußkonform zu programmieren.

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
22.04.2016, 08:01
Beitrag #4

koan Offline
LVF-Neueinsteiger


Beiträge: 5
Registriert seit: Apr 2016

LV 2013 SP1
-
kA



RE: Alternative zu geschachtelter for-Schleife
@Gerd: Vielen Dank für den Hinweis, das mit den Variant-Attributen werde ich mal probieren.

@Holger: Den Eigenschaftsknoten brauche ich doch aber, um über das FGV-Cluster zu iterieren, oder gibt es hierzu noch eine andere Möglichkeit?
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
22.04.2016, 08:03 (Dieser Beitrag wurde zuletzt bearbeitet: 22.04.2016 08:29 von Lucki.)
Beitrag #5

Lucki Offline
Tech.Exp.2.Klasse
LVF-Team

Beiträge: 7.699
Registriert seit: Mar 2006

LV 2016-18 prof.
1995
DE

01108
Deutschland
RE: Alternative zu geschachtelter for-Schleife
Zur Perfomance kann ich nichts sagen. Nur: Deine Vermutung, dass mehrfach geschachtelte Strukturen grundsätzlich Perfomance-Killer sind, teile ich nicht.
Das Problem ist ja auch, dass komplexe Elemente wie z.B. Cluster, Registerkarten weitere komplexe Elemente enthalten können, und diese wieder. Einzelelemente können also beliebig tief verschachtelt sein.
Ich habe mal ein Sub-VI gemacht, welches die Referenzen, Beschriftungen und KlassenID aller Elemente anzeigt, wie tief sie auch verschachtelt sein mögen. Ich brauchte das für Sprachanpassungen, oder für Schriftgößenänderung aller Elemente.
Wenn Du dein VI so umstellt, würdest Du ganz innen eine Struktur (für die Verschachtelungstiefe 1, weiter geht es bei Dir dann nicht) einsparen. Ganz außen käme allerdings eine While-Schleife hinzu.

Hier ist es. Von einem beliebigen VI (natürlich möglichst groß und komplex) aufrufen und staunen... (man muß noch den "RefCluster" von seiner Typdefinition, die ich hier nicht mitliefere, trennen, damit es läuft. Man kann das VI auch leicht auf Pfad-Input statt Ref-Input ändern. Dann muß das zu analysiende VI gar nicht im Memory sein.)

14.0 .vi  ElementRefs.vi (Größe: 16,1 KB / Downloads: 211)

Edit:

13.0 .vi  ElementRefs2013.vi (Größe: 16,23 KB / Downloads: 210)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
22.04.2016, 08:04
Beitrag #6

GerdW Offline
______________
LVF-Team

Beiträge: 17.480
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: Alternative zu geschachtelter for-Schleife
Hallo koan,

ja, die Propertynode brauchst du in deinem VI.
Was machst du eigentlich, wenn der "innere" Cluster in der zweiten Ebene ebenfalls wieder Cluster enthält?

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
22.04.2016, 08:17
Beitrag #7

koan Offline
LVF-Neueinsteiger


Beiträge: 5
Registriert seit: Apr 2016

LV 2013 SP1
-
kA



RE: Alternative zu geschachtelter for-Schleife
@Lucki: leider kann ich dein VI nicht öffnen, da es eine neuere LV Version verwendet als meine.

@Gerd: Dieses Problem ist mir auch schon aufgefallen, da das VI derzeit aber nur in einer kleinen Abteilung verwendet werden soll, habe ich in der Beschreibung angegeben, dass das eingehende Cluster weitere Cluster nur auf der ersten Ebene enthalten darf Blush
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
22.04.2016, 09:20
Beitrag #8

BNT Offline
LVF-Freak
****


Beiträge: 744
Registriert seit: Aug 2008

5.0 - 22Q3
1999
EN

64291
Deutschland
RE: Alternative zu geschachtelter for-Schleife
Wenn die Daten aus der FGV als Custer kommen, ist die Struktur fest und kann explizit ausprogrammiert werden.

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
22.04.2016, 09:38
Beitrag #9

koan Offline
LVF-Neueinsteiger


Beiträge: 5
Registriert seit: Apr 2016

LV 2013 SP1
-
kA



RE: Alternative zu geschachtelter for-Schleife
@Holger: ach so meinst du das. Vll sollte ich hier noch erwähnen, dass das VI bewusst so gehalten ist, dass man möglichst wenig manuell ändern muss wenn es in anderen Zusammenhängen eingesetzt wird.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
22.04.2016, 10:18
Beitrag #10

Lucki Offline
Tech.Exp.2.Klasse
LVF-Team

Beiträge: 7.699
Registriert seit: Mar 2006

LV 2016-18 prof.
1995
DE

01108
Deutschland
RE: Alternative zu geschachtelter for-Schleife
Nach mal zurück zur Ausgangsfrage: Gibt es Alternativen, um die Laufzeit zu verbesseren?
Die Perfomance-Killer sind ja, wie schon festgestellt, die vielen Eigenschaftsknoten. Zu denen gibt es hier aber keine Alternative. Und deshalb wird man mit der Perfomance, so wie sie ist, im Wesentlichen leben müssen. Das VI, welches ich gepostet habe, ist da auch nicht besser. Um von 300 Elementen in einem VI alle interessierenden Werte zu ermitteln, kann schon mal eine Sekunde vergehen.
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
  Alternative zur Ereignisstruktur simcum 5 4.137 16.09.2020 10:05
Letzter Beitrag: IchSelbst
  Alternative zu Referenzen moTo 2 4.217 26.04.2016 18:16
Letzter Beitrag: moTo
  Mausklick in einem Listenfeld (Alternative zur Ereignisstruktur) Headskiiert 3 4.237 01.09.2013 13:35
Letzter Beitrag: Trinitatis
  Alternative für Strings verknüpfen + Schieberegister? R2wo 6 7.288 04.01.2012 13:17
Letzter Beitrag: R2wo
  Listbox Einträge editieren oder Alternative Götz 2 6.369 25.11.2011 13:32
Letzter Beitrag: Götz
  Express VI: Kollektor - Problem / Alternative? ExXeQtor 2 5.462 25.07.2011 20:07
Letzter Beitrag: dimitri84

Gehe zu: