![]() |
Subpanel Performance - Druckversion +- LabVIEWForum.de (https://www.labviewforum.de) +-- Forum: LabVIEW (/Forum-LabVIEW) +--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein) +--- Thema: Subpanel Performance (/Thread-Subpanel-Performance) |
Subpanel Performance - GT123 - 02.05.2013 05:36 Hallo, ich habe hier eine Performance Schwierigkeit bei der mir bestimmt jemand weiterhelfen kann. Die Situation ist folgende: Es gibt ein TopLevel Vi welches ein Subpanel hat. In dem Toplevel Vi und Sub Sub...Vi`s läuft eine Steuerung ab. Dabei wird über das Subpanel ein "Anzeige-Vi" aufgerufen, welches einige Graphen mit teilweise sehr vielen Messwerte anzeigt. Das Subpanel deswegen weil ich keine Software möchte welche x Fenster öffnet, eine Software ein Fenster. Jetzt zur Performance: Ist das Anzeige-Vi, also die Graphen, mit sehr vielen Werten gefüllt, wird das Steuerung (z.B. Messwerte abtasten, Messkanäle schalten...) langsamer. Wird das Subpanel nicht-sichtbarer geschalten läuft die Steuerung wieder flüssiger bis das Subpanel mit dem Anzeige Vi wieder per Eigenschaft-Knoten sichtbar gesetzt wird. Das Anzeige Vi läuft an sich asynchron nur ist eine "Frontpanel Verbindung" mit dem Toplevel Vi vorhanden. Gibt es Einstellungen bei der dies speichertechnisch getrennt werden kann? Das Anzeige Vi wird per Referenz gestartet. Bei dem open Ref habe ich keinen Wert für die Option vorgegeben, gibt es hier eine Möglichkeit die Performance zu verbessern? Vielen Dank für Eure Meinungen und Vorschläge. RE: Subpanel Performance - Holy - 02.05.2013 05:44 Hat dein Anzeige-VI vielleicht irgendeine Abhängigkeit zu deinem Steuer-VI? Du wirst ja sicher die Daten die dort erfasst werden auch im Graphen mit anzeigen?! Im Allgemeinen dauert das Zeichnen eines Graphen mit sehr vielen Datenpunkten seine Zeit. Aufgrund der Auflösung deines Monitors kannst du aber eigentlich nicht erkennen ob da nun 2000 Datenpunkte oder 1 Million drin sind. Ein weiterer Punkt ist die Aktualisierungsrate deiner Anzeige. Mehr als ~30 Aktualisierung kannst du optisch nicht erfassen und das ist oftmals schon mehr als sinnvoll. RE: Subpanel Performance - GT123 - 02.05.2013 05:54 Die Daten werden vom Steuer Vi per Queue geschrieben. Das Anzeige Vi hat ein SubVi welches parallel läuft und die Daten per Queue empfängt und diesen dann in ein SR legt. Von diesem SR wird der neue Messwert zu den bisherigen gesammmelten angehängt und die Daten von Graph xy mit einer Graphreferenz in den Graph xy geschrieben. Die einzigste Abhängigkeit die ich weiss ist das an der Stelle wo das SteuerVi das AnzeigeVi per Ref lädt es ein Disabled Case gibt in der der das AnzeigeVi im disabled Case liegt (für Testzwecke ohne Start per Referenz). Ansonsten ist mir bisher keine Verbindung aufgefallen. RE: Subpanel Performance - Holy - 02.05.2013 18:29 Ich glaube das beste wäre wenn du uns das Anzeige VI mal zeigen könntest. Im Allgemeinen würde ich folgende mögliche Ursachen vermuten:
RE: Subpanel Performance - macmarvin - 02.05.2013 20:17 (02.05.2013 05:54 )GT123 schrieb: ... die Daten von Graph xy mit einer Graphreferenz in den Graph xy geschrieben. Das _kann_ (muss aber nicht) langsam sein, da das Schreiben immer ein UpdateDisplay (synchron), im Gegensatz zu Schreiben in Control, ausführt. Wie groß ist denn der Unterschied, wenn dein VI nicht als Subpanel, sondern an gleicher Position und sichtbar mit eigenem Fenster ausgeführt wird? Es könnte sein, dass unabhängig von Subpanel oder nicht, der UI-Thread insgesamt mit dem Zeichnen kaum noch nachkommt. Bei sehr UI-lastigen VIs _kann_ es helfen das komplette VI in den Ausführungseinstellungen in den UI-Thread zu verlegen. Damit werden dann (hoffentlich) der Overhead der (zu) häufigen Threadwechsel minimiert. Das gilt im Übrigen auch für VIs die sehr viele DLL Aufrufe im UI-Thread enthalten. Die Maßnahme _kann_ allerdings auch noch hinten losgehen :-) Im Zweifel hilft nur sehr detailliertes Nachmessen und immer wieder hinterfragen, ob man gerade Schmarrn misst. RE: Subpanel Performance - GT123 - 03.05.2013 07:04 Hallo zusammen, ich vermute es liegt an der (zu häufigen) Aktualisierung der Graphen vor allem wenn die Anzahl der Wert steigt. Denn mit steigender Anzahl der Wert in den Graphen wird es langsamer. Und wenn ich bei allen Graphen (die schon einige Werte haben) die X-Achse zoome so damit kein Wert mehr zu sehen ist dann läuft die gesamte Steuerung wieder flüssig. Vorab sind für mich noch zwei Dinge nicht ganz klar: -Wird nur der Graph neu gezeichnet bei dem mit der Property Eigenschaft was geändert wird oder das ganze FP also alle Elemente? -....kann_ es helfen das komplette VI in den Ausführungseinstellungen in den UI-Thread zu verlegen. Wie ist das zu verstehen? Ich könnte mit DeferUpdate die Aktualisierung bei jedem Messwert unterdrücken wenn z.B. der Zeitstempel des letzten Messwert vor weniger als 1s eingetroffen ist. Oder irgendwie alle 2s aber natürlich nur wenn Messwerte reinkommen... Ich muss da jetzt noch einiges Testen und probieren gerne erwarte ich schon eure Antorten/Meinungen dazu. RE: Subpanel Performance - Holy - 03.05.2013 18:34 (03.05.2013 07:04 )GT123 schrieb: -Wird nur der Graph neu gezeichnet bei dem mit der Property Eigenschaft was geändert wird oder das ganze FP also alle Elemente?Es wird der Bereich der sich geändert hat neu gezeichnet. In deinem Fall die Graph-Fläche. (03.05.2013 07:04 )GT123 schrieb: -....kann_ es helfen das komplette VI in den Ausführungseinstellungen in den UI-Thread zu verlegen.Threadwechsel verschlechtern deine Performance. Die Grundidee ist somit diese zu vermeiden. Das kann muss aber nicht helfen. (03.05.2013 07:04 )GT123 schrieb: Ich könnte mit DeferUpdate die Aktualisierung bei jedem Messwert unterdrücken wenn z.B. der Zeitstempel des letzten Messwert vor weniger als 1s eingetroffen ist. Oder irgendwie alle 2s aber natürlich nur wenn Messwerte reinkommen...DeferUpdate verhindert alle Aktualisierungen des Panels. Das betrifft dann somit nicht nur deinen Graphen. Überlegenswert ist es auch immer das UI vom restlichen Code zu trennen. Dann kannst im entsprechenden UI Thread dann langsamer aktualisieren, ausdünnen und Daten reduzieren. |