LabVIEWForum.de
Performance bei Graphen/Charts erhöhen - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein)
+---- Forum: Signaldarstellung (/Forum-Signaldarstellung)
+---- Thema: Performance bei Graphen/Charts erhöhen (/Thread-Performance-bei-Graphen-Charts-erhoehen)



Performance bei Graphen/Charts erhöhen - Matze - 14.06.2012 06:37

Hi zusammen,

ich erfasse Messwerte über max. 3 Minuten mit 250 Hz. Diese zeige ich in einen Chart an.

Da ich mit Cursors (und einem generierten Hintergrundbild) Bereiche markieren möchte, bleibt mir nur der Graph übrig. Mit einem Diagramm (mit der integrierten Historie) kann man keine Cursors verwenden, wenn ich das richtig sehe.

D.h. ich muss die Werte fortlaufend einem Array hinzufügen (einmalige Initialisierung und anschließendes Ersetzen der Elemente). Das sende ich dann fortlaufend an den Chart.
Von der Performance ist das sehr schlecht. Ich vermute deshalb, weil jedesmal die gesamten Messwerte neu gezeichnet werden. Bei einem Diagramm wird aufgrund der Historie vermutlich nur der neu hinzukommende Teil neu gezeichnet/berechnet.
D.h. hier wäre die Performance vermutlich besser.

Zur Reduzierung der Werteanzahl zeige ich nur jeden 10. Wert an, aber je nach eingestellter Messzeit (mal 10 Sekunden, mal 3 Minuten) gibt's hier sicher Optimierungsmöglichkeiten.

Wie macht ihr das in einem solchen Fall?
Kann ich irgendwie auf das Diagramm wechseln, in der Hoffnung, dass die Performance besser wird?

Evtl. liegt das Problem auch beim großen "Puffer-Array" (ca. 50.000 Werte pro Messkanal; max. 6 Kanäle).

Grüße
Matze


RE: Performance bei Graphen/Charts erhöhen - BNT - 14.06.2012 09:59

Hi Matze
Die Anzahl der Werte zu reduzieren ist der richtige Ansatz. Ich würde aber noch einen schritt weiter gehen:

Du solltest die Zahl der angezeigten Werte auch die Anzahl der Pixel in den Graph beschränken. Dann muss LV nicht soviel rechenn um den Graph darzustellen. Um den Informationsgehalt nicht zu sehr zu reduzieren, würde ich zusätzlich den Mittelwerte, Standardabweichung, Minimum und Maximum anzeigen, Maximum, Mittelwertt + Sigma, Mittelwert, Mittelwert - Sigma, Minimum.

Der Bereich der Angezeigten Werte kann durch den Benutzer z.B. durch Zoomen eingestellt werden. Im Blockdiagramm rechnest Du die Anzeigewerte aus, das gaht vergleichsweise schnell. Auch die Aktualisierungsrate, Schreiben auf den Graphindikator, kannst Du beschränken, weill der Mensch nicht beliebeig schnell gucken kann.

Gruß Holger


RE: Performance bei Graphen/Charts erhöhen - Matze - 15.06.2012 10:50

Hallo,

danke für die Antwort.
Eine Zoom-Funktion benötige ist erstmal nicht.

Ich muss mal schauen, wie ich die Werteanzahl am besten verringere.

Wie sieht's den mit dem Diagramm aus? Hat das aufgrund des integrierten Puffers eine bessere Performance? Wenn ja, kann man da irgendwie Cursors verwenden?


RE: Performance bei Graphen/Charts erhöhen - jg - 15.06.2012 11:02

Ich bezweifle, dass ein Chart besser ist, vor allem wenn irgendwelche Autoscalings aktiv sind. Intern hält es schließlich auch alle angezeigten Daten (Stichwort PropertyNode History).

Zwecks Reduktion der Daten für eine Darstellung, da gab es mal was auf ni.com, GigaLabview.

Gruß, Jens


RE: Performance bei Graphen/Charts erhöhen - Matze - 16.06.2012 06:05

Danke, GigaLabVIEW habe ich mir kürzlich angesehen, aber 100% nachvollziehen konnte ich das nicht, muss ich zugeben.

Klar werden intern die gleichen Werte gepuffert, aber ich könnte mir vorstellen, dass ein Chart immer nur die neu hinzugekommenen Werte neu zeichnet und die alten quasi gezeichnet lässt. Bei einem Graph wird immer das komplette Messwert-Array übergeben und daher wird der Graph bei jeder Zuweisung alles neu zeichnen müssen.