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 

Unerwarteter Performance-Einbruch



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!

10.11.2013, 18:09
Beitrag #1

D_Sev Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 56
Registriert seit: Nov 2013

2012
2011
DE_EN


Deutschland
Unerwarteter Performance-Einbruch
Ich bin auf der Suche nach einer Erklärung für ein mir nicht plausibles Verhalten.


Ich habe 6 Instanzen eines reentranten VI's. Diese VI's führen alle kontinuierlich Berechnungen aus und senden alle pro Durchlauf ihr Ergebnis über ein Melder-SubVI an den ein und den gleichen Empfänger.

Das Melder-VI hat einen FGV-charackter und ist deshalb nicht reentrant.

Mein Gedanke war nun folgender: Da 6 "parallele" Schleifen ein und das selbe VI aufrufen, habe ich hier vermutlich eine Art Flaschenhals.

Also mache ich diese VI doch reentrant, rufe es aber in den einzelnen Instanzen per "Call by Reference" auf um den FGV-charackter für die einzelnen Instanzen beizubehalten.

Erwartet hätte ich nun alles von einer leichten Verbesserung der Performance bis zu einer leichten Verschlechterung. Aber ...

Ergebnis: Bei einer Testsequenz, die verteilt auf die 6 VI's ,1200 mal eine simple Berechnung ausführt und das Ergebnis zurücksendet, habe ich mich von ca. 10s in der alten Version auf ca 55s in der neuen Version verschlechtert.

(Die Initialisierungs-Phase ist in dieser Testsequenz nicht inbegriffen, d.h. die einzige Änderung ist der unterschiedliche Aufruf des Melder-VI's)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
10.11.2013, 18:45
Beitrag #2

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: Unerwarteter Performance-Einbruch
Die Testsequenz wird ja von Codeumfang her überschaubar sein. Lade sie doch einfach mal hoch.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
10.11.2013, 20:05
Beitrag #3

jg Offline
CLA & CLED
LVF-Team

Beiträge: 15.864
Registriert seit: Jun 2005

20xx / 8.x
1999
EN

Franken...
Deutschland
RE: Unerwarteter Performance-Einbruch
Der Aufruf eines VI per "Call by Reference" ist üblicherweise deutlich langsamer. Außerdem musst du da aufpassen, dass das VI wirklich "Reentrant" aufgerufen wird.

So ganz verstehe ich auch nicht die Verwendung eines Melders. Wenn ich die Ergebnisse von 6 Instanzen über dieselbe Kommunikationsschiene weitergeben will, dann würde ich zu einer Queue greifen, damit ich wirklich von allen Instanzen das Ergebnis bekomme. Über einen Melder bekomme ich immer nur das Ergebnis von 1 Instanz, es könnten Ergebnisse anderer Instanzen verloren gehen.

Wie Lucki geschrieben hat, VIs (mglw. auch abgespeckte) wären zum besseren Verständnis hilfreich.

Gruß, Jens

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.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
11.11.2013, 08:37
Beitrag #4

D_Sev Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 56
Registriert seit: Nov 2013

2012
2011
DE_EN


Deutschland
RE: Unerwarteter Performance-Einbruch
Also nachdem was ich so gelesen habe, ist ein Aufruf per Reference nur unwesentlich langsamer als der eines normalen SubVI's.

Ich verwende natürlich Queues..das ist bei mir im Kopf irgendwie falsch verlinkt, sodass ich ich immer Melder sagen. Und offensichtlich sogar schreibe^^

Aber das Problem hat sich auf seine Weise jetzt auch erledigt. Wenn ich das Programm abspecke, lässt sich der Fehler nicht mehr reproduzieren.

Gefunden habe ich aber auch das hier:

"Be aware that calling a VI with the Call By Reference Node involves a small overhead compared with a normal SubVI call, due to validating the VI reference and some other bookkeeping. This is, however, insignificant with all but very small VIs when used on local machines. It can become a problem with frequent calls to remote machines."
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
11.11.2013, 12:36
Beitrag #5

jg Offline
CLA & CLED
LVF-Team

Beiträge: 15.864
Registriert seit: Jun 2005

20xx / 8.x
1999
EN

Franken...
Deutschland
RE: Unerwarteter Performance-Einbruch
Aha, Queues, dann passt alles.
Ich würde das folgendermaßen aufziehen:
Die Queue-Refnum wird einmal bei Programmstart erzeugt und entweder per Globaler Variable oder per FGV verteilt. Die "Erfassungs-VIs" holen sich diese Refnum in ihrer Initialisierungsphase und merken sie sich dann per Schieberegister. Schreiben in Queue dann einfach per "Enqueue Element". Dafür kann man ein eigenes SubVI erstellen, mit der Queue-Refnum als Ein- und Ausgang. Wenn dieses SubVI als "Reentrant" definiert wird, dann kann es auch mehrfach parallel aufgerufen werden.

Gruß, Jens

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.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
30
Antwort schreiben 


Möglicherweise verwandte Themen...
Themen Verfasser Antworten Views Letzter Beitrag
  Probleme mit Performance (Berechnungen und Grafik) catbull 5 4.720 21.07.2018 10:13
Letzter Beitrag: IchSelbst
  Performance beim Betrieb über WLAN Heber 9 5.978 22.08.2017 14:28
Letzter Beitrag: Heber
  Melder Performance D_Sev 13 11.208 08.09.2014 10:56
Letzter Beitrag: GerdW
  Performance von Tabelle/Listenfeld schreiben derherrk 8 6.585 03.06.2013 08:28
Letzter Beitrag: Achim
  LabView-Performance yusuf 89 4 5.013 14.05.2013 08:30
Letzter Beitrag: Y-P
  Subpanel Performance GT123 6 6.955 03.05.2013 18:34
Letzter Beitrag: Holy

Gehe zu: