Wie kann ich die Performance von WinForms MSChart verbessern?

9

Ich habe einige einfache Diagramme (vom Typ FastLine) mit MSChart erstellt und diese mit Live-Daten wie folgt aktualisiert:

Dazu binde ich eine beobachtbare Sammlung eines benutzerdefinierten Typs wie folgt an das Diagramm:

%Vor%

Bei jeder Aktualisierung ändert sich der Datensatz vollständig, es handelt sich nicht um ein laufendes Update!

Mit einem Profiler habe ich festgestellt, dass der Aufruf DataBind() etwa 1,5 Sekunden dauert. Die anderen Anrufe sind vernachlässigbar.

Wie kann ich das schneller machen?

  • Soll ich einen anderen Typ als ObservableCollection verwenden? Ein Array wahrscheinlich?
  • Soll ich eine andere Form der Datenbindung verwenden?
  • Gibt es einige Optimierungen für den MSChart, die ich vielleicht verpasst habe?
  • Soll ich ein wenig gesetztes Datum verwenden, nur einen Wert pro Pixel?
  • Habe ich einfach die Leistungsgrenze von MSCharts erreicht?

Vom Typ der Anwendung, um es "fließend" zu halten, sollten wir mehrere Aktualisierungen pro Sekunde haben.

Danke für Hinweise!

BEARBEITEN: Lösung wie von leppie vorgeschlagen:

%Vor%

Das funktioniert jetzt mehr als doppelt so schnell!

    
Marcel 26.03.2010, 09:13
quelle

1 Antwort

5

Verwenden Sie die anderen Bind-Methoden, sie sind sehr schnell.

Ich aktualisiere etwa 15 Serien über 3 Gebiete, mit 300 Punkten in jeder Serie, jede Sekunde und keine wirkliche Verlangsamung.

    
leppie 26.03.2010, 10:16
quelle

Tags und Links