Einzelnen Beitrag anzeigen

nuclearping

Registriert seit: 7. Jun 2008
708 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#1

[XE7, VCL] Wie TChart-Zeichnen beschleunigen?

  Alt 1. Jul 2015, 06:30
Hallo!

Ich habe in meinem Projekt drei TChart Komponenten. Jedes TChart enthält mehrere Serien. Die ersten beiden TChart enthalten insg. 5 TLineSeries . Das dritte eine TBarSeries und eine TLineSeries .

Diese Charts sind in einem TPageControl untergebracht. Jedes Chart hat seine eigene TTabSheet Seite. Die Charts werden kontinuierlich mit ausgewerteten Daten gefüttert, die über einen TThread von einer USB-Hardware ausgelesen und verarbeitet werden. Dabei nutzt der Thread zur Weitergabe der Daten schon kein Synchronize , sondern arbeitet mit PostMessage .

Jedoch stelle ich leider fest, dass diese Konstellation zum schreien langsam ist und der Flaschenhals hier in der Zeichnung des (sichtbaren) TChart liegt. Ich habe ein Beispielprojekt angehangen, wo das Problem deutlich wird. Zum zeichnen / aktualisieren eines TChart benötigt er bei maximierten Fenster (1920x1080) ~300-500ms, selbst nach dem Start der Anwendung, wenn noch nichtmal Daten vorhanden sind.

Das führt dazu, dass der Wechsel zwischen den TTabSheet Seiten hier in meiner Entwicklungs-VM ca. 1 Sekunde dauert. Auch die Buttons, das ganze Fenster usw. reagieren dermaßen verzögert, dass man das keinem anbieten kann. Die VM läuft auf 2/1 CPUs, 8GB RAM; Host-System ist ein i7 4790K @ 4GHz, 16GB RAM. Auf einem Testlaptop beim Kunden sieht das Ganze jedoch genauso aus, sogar noch schlimmer. Dort ging dann nach dem Wechsel zur Diagram-Ansicht nach einer kurzen Zeit garnichts mehr, weil das System mit dem Zeichnen nicht klar gekommen ist.

Den einzigen Geschwindigkeitszuwachs sehe ich, wenn ich das Fenster extrem verkleinere. Aber das ist ja nicht Sinn der Sache.

Habt ihr eine Idee, wie ich das Ganze (um Faktoren) beschleunigen kann? Geht da überhaupt noch was mit TChart? Was nutzt ihr denn für die Darstellung von solchen Daten?

Ich habe hier noch TMS Advanced Charts in der Palette. Damit habe ich früher mal gearbeitet, jedoch ziemlich schlechte Erfahrungen mit der ZoomControl gemacht und seither nicht mehr angefasst.

Auch wollte ich die Charts von Lohninger mal probieren. Das scheitert jedoch schon daran, dass ich nach der Installation und dem Öffnen eines Beispielprojekts eine Zugriffsverletzung bei Adresse 19DB4072 in Modul 'sdlchartpack_rt_104X7.bpl'. Schreiben von Adresse 00000070. erhalte. Das gleiche auch beim Anlegen eines neuen Testprojekts, mit dem Versuch eine "RChart"-Komponenten auf die Form zu ziehen. Und bei der Deinstallation der Lohninger-Komponenten hat er meinen Delphi-Bibliothekspfad irgendwie geleert und seither funktioniert auch Castalia nicht mehr (ebenfalls Zugriffsverletzung in einer der Castalia-BPLs beim Start von Delphi), auch nicht nach einer De- und Reinstallation.

Wäre für jede Hilfe dankbar!

Vielen Dank!
Angehängte Dateien
Dateityp: zip TChartTest.zip (58,4 KB, 5x aufgerufen)
  Mit Zitat antworten Zitat