Einzelnen Beitrag anzeigen

grl

Registriert seit: 5. Feb 2007
174 Beiträge
 
FreePascal / Lazarus
 
#1

Design einer komplexen Software: Multithreading oder nicht...

  Alt 4. Sep 2011, 16:20
Tag!

In einer Applikation (entwickelt mit D7/XP) werden vereinfacht gesagt Daten von einer externen Quelle aufgezeichnet, aus den aufgezeichneten Daten verschiedene Wertefolgen berechnet und diese über ein TChart angezeigt.

Mit steigender Komplexität der Software wird das Berechnen und anzeigen immer mehr zu einem Performance-Problem. Für's aufzeichnen der Daten und für diverse andere Hintergrundaufgaben wende ich sehr erfolgreich Threads an. Threads verwende ich generell sehr viel und erfolgreich, ich gehe daher davon aus daß der Thread-Design grundsätzlich korrekt und ohne Engpässe gelöst ist.

Für den Komplex Berechnung/Anzeige hab ich bisher zwei Wege gefunden:
1.) Berechnung in einem Thread, einfügen der Punkte ins TChart via Synchronize direkt aus dem Thread.
2.) Berechnen und anzeigen direkt im MainThread.

1.) hat den Vorteil, daß die Berechnung im Hintergrund passiert, allerdings ist das Zeichnen selbst so zeitaufwändig, daß es unterm Strich nicht viel schneller ist als die Variante 2. Das scheint allerdings an der TChart-Komponente zu liegen, denn ich die Werte statt in einem TChart einfach als Werte anzeige, ist das ganze so wie ich mir das vorstelle.
2.) ist vom Design her einfacher und muss nicht synchronisiert werden. Bei großen Datenmengen ist allerdings Geduld angesagt...

Daher meine Fragen:

1.) Wie würdet ihr sowas lösen bzw. wie würdet ihr das Zusammenspiel Berechnungsthread/MainThread lösen?
2.) Kann jemand eine gute Komponente empfehlen, mit der sich ein LineChart realisieren lässt, die nicht so überfrachtet und daher langsam ist wie TChart?


Über Tips dankbar,

Luggi
  Mit Zitat antworten Zitat