AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

TChart AddXY() zu langsam bei 100.000 Werten

Ein Thema von Hallo_Thomas · begonnen am 11. Mär 2006 · letzter Beitrag vom 30. Nov 2006
Antwort Antwort
Hallo_Thomas

Registriert seit: 18. Apr 2005
Ort: Dresden
405 Beiträge
 
Delphi 2005 Professional
 
#1

TChart AddXY() zu langsam bei 100.000 Werten

  Alt 11. Mär 2006, 21:07
Hallo,

ich wollte hier einige Werte Graphisch darstellen, aber AddXY (oder TLineseries?)
hat ganz schön an 100.000 Werten ganz schön zu kauen.Gibt es da andere Komponenten die Sache schneller darzustellen bzw. die Sache zu optimieren?


Delphi-Quellcode:
procedure TForm2.Button2Click(Sender: TObject);
var Counter : array[1..11] of Integer;
    y,x,z,i : Integer;
    MySeries : TLineseries;
begin
  Chart1.UndoZoom;
  Chart1.FreeAllSeries;
  for y := 1 to 11 do
    Counter[y] := 0;
  MySeries:= TLineseries.Create( Self );
  MySeries.ParentChart:= Chart1;
  for x := length(Form1.MyListe) - 1 downto 0 do
  begin
    z:=Form1.MyListe[x];
    i:=length(Form1.MyListe)-x;
    for y := 1 to 11 do
    begin
      if z in Form1.werte[y] then
      begin
        Counter[y] := 0;
      end else
      begin
          Inc(Counter[y]);
      end;
      Begin
        with Chart1.SeriesList[ 0 ] do
          AddXY( i,Array_Max(Counter,0,10));
      end;
    end;
  end;
end;
Angehängte Dateien
Dateityp: rar liste_420.rar (20,6 KB, 10x aufgerufen)
  Mit Zitat antworten Zitat
ConstantGardener

Registriert seit: 24. Jan 2006
Ort: Halberstadt
375 Beiträge
 
Delphi 10.4 Sydney
 
#2

Re: TChart AddXY() zu langsam bei 100.000 Werten

  Alt 11. Mär 2006, 21:58
Hallo Hallo_Thomas,

warum fasst Du die Werte nicht in Gruppen zusammen (z.B. immer Mittelwert von 10 Werten) ? 100000 Werte stellt TChart ja eh nicht dar. Oder teil die Darstellung in mehrere Pages auf !!
Andreas Schachtner
  Mit Zitat antworten Zitat
Benutzerbild von DGL-luke
DGL-luke

Registriert seit: 1. Apr 2005
Ort: Bad Tölz
4.149 Beiträge
 
Delphi 2006 Professional
 
#3

Re: TChart AddXY() zu langsam bei 100.000 Werten

  Alt 11. Mär 2006, 22:07
gibt es ein TChart.BeginUpdate() ? damit schaltest du das neuzeichnen bis zum nächsten TChart.EndUpdate() aus.
Lukas Erlacher
Suche Grafiktablett. Spenden/Gebrauchtangebote willkommen.
Gotteskrieger gesucht!
For it is the chief characteristic of the religion of science that it works. - Isaac Asimov, Foundation I, Buch 1
  Mit Zitat antworten Zitat
Hallo_Thomas

Registriert seit: 18. Apr 2005
Ort: Dresden
405 Beiträge
 
Delphi 2005 Professional
 
#4

Re: TChart AddXY() zu langsam bei 100.000 Werten

  Alt 11. Mär 2006, 23:43
@ConstantGardener

-Die Werte werden Durch Array_Max(Counter,0,10) zusammengefast

Delphi-Quellcode:
function TForm2.Array_Max(const aJeton: array of Integer; aStart, aEnd: Integer):Integer;
Var i:Integer ;
begin
  Result := 0;
  for i := aStart to aEnd do
    Result := MaxIntValue([Result,aJeton[i]]);
end;
-Die Aufteilung löst nicht das Problem eines schnelleren Berechnung des Graphen

@DGL-luke
Coole Idee:
Delphi-Quellcode:
  Chart1.SeriesList[0].Beginupdate;
  Chart1.SeriesList[0].Endupdate;
Bringt etwa eine 50% Verbesserung bei meinen Programm.Echt Coole Idee!!!

Danke!

Fällt jemand noch eine Idee ein, der Procedure hier Beine zu machen?
  Mit Zitat antworten Zitat
Benutzerbild von DGL-luke
DGL-luke

Registriert seit: 1. Apr 2005
Ort: Bad Tölz
4.149 Beiträge
 
Delphi 2006 Professional
 
#5

Re: TChart AddXY() zu langsam bei 100.000 Werten

  Alt 12. Mär 2006, 10:09
Du könntest es in einen Thread auslagern. Dadurch wird dann kontinuierlich gefüllt. Du könntest einmal neuzeichnen lassen (Invalidate() oder gleich Paint(), denke ich sollte da helfen), sobald du die erste "Seite" voll hast und dann die Kompo erst wieder voll aktivieren, wenn der Thread fertig ist.

Musst du eben sehen, wie threadsicher die Kompo von sich aus ist.

Ach ja: Damit das Fenster nicht einfriert wenn dus nicht im Thread machst, kannst du zwischendrin (alle 1000 - 10000 Werte) mal ein Application.Processmessages() einfließen lassen.
Lukas Erlacher
Suche Grafiktablett. Spenden/Gebrauchtangebote willkommen.
Gotteskrieger gesucht!
For it is the chief characteristic of the religion of science that it works. - Isaac Asimov, Foundation I, Buch 1
  Mit Zitat antworten Zitat
Hallo_Thomas

Registriert seit: 18. Apr 2005
Ort: Dresden
405 Beiträge
 
Delphi 2005 Professional
 
#6

Re: TChart AddXY() zu langsam bei 100.000 Werten

  Alt 12. Mär 2006, 12:03
Dankeschön, ich werd es mir das mal demnächst anschauen, was sich da machen lässt!
  Mit Zitat antworten Zitat
Thanatos81
(Gast)

n/a Beiträge
 
#7

Re: TChart AddXY() zu langsam bei 100.000 Werten

  Alt 30. Nov 2006, 15:16
Zitat von Hallo_Thomas:
@DGL-luke
Coole Idee:
Delphi-Quellcode:
  Chart1.SeriesList[0].Beginupdate;
  Chart1.SeriesList[0].Endupdate;
Bringt etwa eine 50% Verbesserung bei meinen Programm.Echt Coole Idee!!!

Danke!
Hmm, ich suche auch gerade etwas in der Art. Aber weder D/ noch D2006 kennen SeriesList[i].BeginUpdate Irgendwer ne AHnung, woran das Liegen könnte? Gibt es das nur in der kostenpflichtigen Pro-Version oder etwas in der ARt?
  Mit Zitat antworten Zitat
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#8

Re: TChart AddXY() zu langsam bei 100.000 Werten

  Alt 30. Nov 2006, 15:41
Wozu zum Geier willst Du 100.000 Punkte darstellen, was für ein Display (und vor allen Dingen, was für eine astronomische Auflösung) hast Du denn?

Mal ehrlich, nimm einfach jeden 500.ten Punkt und dann gibts keine Probleme mehr...
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
Thanatos81
(Gast)

n/a Beiträge
 
#9

Re: TChart AddXY() zu langsam bei 100.000 Werten

  Alt 30. Nov 2006, 17:16
100.000 sind es diesmal nicht, aber es sind viele Reihen mit vielen Werten, so das insgesamt schon einiges zusammenkommt. Ist für ne Maschinendatenvisaulisierung auf nem Dual-Display-System, bei dem beide Monitore eine Auflösung von 1680 x 1050 haben. Gibt halt Kunden mit komischen Wünschen

Und auch bei weniger Werten, sagen wir mal 5.000 Punkte, fände ich ein BeginUpdate/EndUpdate gut, denn wen man Zeit sparen kann, sollte man das auch, meiner Meinung nach.
  Mit Zitat antworten Zitat
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#10

Re: TChart AddXY() zu langsam bei 100.000 Werten

  Alt 30. Nov 2006, 17:20
Das man das optimieren sollte, ist klar (FastLine ist eine Series, die schnell genug sein sollte), aber unsinnig viele Werte sollten es schon aus Prinzip nicht sein, eben weil man keinen Unsinn programmieren sollte.

Das Argument, sonst sähe man keine Peaks, kann auch nicht zählen, weil dann die Abtastrate zu klein ist... Aber wie gesagt, Kunden gibts...
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:43 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz