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!