AGB  ·  Datenschutz  ·  Impressum  







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

Chart-Komponente die 1000 Werte / sec verträgt

Ein Thema von DelphiManiac · begonnen am 17. Jun 2012 · letzter Beitrag vom 18. Jun 2012
Antwort Antwort
Benutzerbild von ChrisE
ChrisE

Registriert seit: 15. Feb 2006
Ort: Hechingen
504 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#1

AW: Chart-Komponente die 1000 Werte / sec verträgt

  Alt 18. Jun 2012, 08:38
Hi DelphiManiac,

also ich würde das Problem aufschlüsseln bzw. genauer definieren. Ich denke du brauchst die hohe Abtastrate, weil du z.B. spätere Analysen drüber laufen lassen willst - also offline - und da auch in bereich von 100 ms rein Zoomen willst um zu sehen was da los war. Aber all das betrifft ja erstmal nicht den Onlinebereich - also den Zeitpunkt des Aufnehmens. Aus meiner Sicht brauchst du Online meist nur ein Darstellung um zu sehen, dass etwas passiert und dass es so ungefähr in die Richtung geht wie man sich das vorstellt.
Dafür würde es am Anfang schon reichen nur jeden zehnten bis zwanzigsten Wert zu übergeben an das Chart. Es passiert dadurch natürlich in der Visualisierung ein undersampling - bzw. siehst du u.U. nicht jeden Peak. Aber für Online könnte das schon reichen.

Anders formuliert: Versuche Deine Anforderungen der Messtechnik / Datenverarbeitung von denen der Visualisierung getrennt zu betrachten und auch getrennt um zu setzten. Ich denke, dass könnte Dich weiter bringen.

Gruß, Chris
Christian E.
Es gibt 10 Arten von Menschen, die die Binär lesen können und die die es nicht können

Delphi programming rules
  Mit Zitat antworten Zitat
Popov
(Gast)

n/a Beiträge
 
#2

AW: Chart-Komponente die 1000 Werte / sec verträgt

  Alt 18. Jun 2012, 09:09
Ich habe vor einiger Zeit für eine Aufgabe paar einfache Test durchgeführt. Zwar kann man es nicht genau übertragen, aber ...

Zuerst das System: AMD 2,7 GHz. Es wurden farbige Quadrate um die 50 Pixel gezeichnet. Bei 3.000 Rechtecken hatte ich ein FPS von über 60, bei 10.000 Rechtecken hatte ich ein FPS von 30, bei 45.000 Rechtecken ein FPS von 5, das ergibt rechnerisch 225.000 Rechtecke pro Sekunde.

Allerdings fanden zwischendurch noch paar Berechnungen statt, alles lief im Rahmen des normalen Programms statt. Es war also keine reine Schleife.
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#3

AW: Chart-Komponente die 1000 Werte / sec verträgt

  Alt 18. Jun 2012, 10:56
Meines erachtens sollte das mit OpenGl / DirectX doch ohne weiteres möglich sein.
Nur eine komponente dafür kenn ich nicht.

gruss
  Mit Zitat antworten Zitat
Jens01

Registriert seit: 14. Apr 2009
675 Beiträge
 
#4

AW: Chart-Komponente die 1000 Werte / sec verträgt

  Alt 18. Jun 2012, 11:25
Sowas? Oder hier.
Achtung: Bin kein Informatiker sondern komme vom Bau.
  Mit Zitat antworten Zitat
Medium

Registriert seit: 23. Jan 2008
3.689 Beiträge
 
Delphi 2007 Enterprise
 
#5

AW: Chart-Komponente die 1000 Werte / sec verträgt

  Alt 18. Jun 2012, 13:01
Das Zeichnen selbst ist hier wirklich weniger der Knackpunkt. Eher die Vorstufe: Was übergebe ich an "was auch immer nachher zeichnet", bzw. wie viel davon, und ist das sinnvoll. Eine 3D API würde ich dafür jetzt allerdings eher nicht in den Raum werfen, für den putzigen Unterschied den das machen dürfte (zumal man an ganz anderen Stellen genau so ineffiziente Dinge tun könnte, da sie halt gleich zu handhaben wären (Speicherung, Übertragungsweg, Puffer füllen, etc.)) wäre das den doch nicht ganz kleinen Mehraufwand kaum wert (vor allem die Lernerei wenn man da noch nie was mit gemacht hat).

Erfahrungsgemäß ist es fast immer sehr sinnvoll, wirklich auch nur die Daten in einen Darstellungsmechanismus zu füttern, die tatsächlich angezeigt werden (können). Wie die Daten in den PC kommen, und wie sie dort gespeichert sind ist allein für's zeichnen zweitrangig. Man könnte eine Vermittlerschicht einführen, die berechnet für was für einen Zeitraum wie viele Werte auf wie viele Zielpixel gebracht werden müssen, und diese gräbt dann die nötigen Werte aus dem Datenbestand und reicht sie an ein Chart oder was auch immer weiter. Entsprechend dynamisch aufgebaut ist damit auch zoomen und scrollen effizient möglich denke ich.

Ich glaub aber immer noch, dass die echte Schwierigkeit das Aufzeichnen wird.
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#6

AW: Chart-Komponente die 1000 Werte / sec verträgt

  Alt 18. Jun 2012, 13:05
Zitat:
Eine 3D API würde ich dafür jetzt allerdings eher nicht in den Raum werfen, für den putzigen Unterschied den das machen dürfte
Na ja putzig ist das nicht gerade da in dem Fall die CPU Auslastung seitens der GPU bei so hohem rechenaufwand doch sehr reduziert würde.
Was dann noch Raum für andere Anwendungen übrig ließe.

gruss
  Mit Zitat antworten Zitat
Medium

Registriert seit: 23. Jan 2008
3.689 Beiträge
 
Delphi 2007 Enterprise
 
#7

AW: Chart-Komponente die 1000 Werte / sec verträgt

  Alt 18. Jun 2012, 13:15
Der Anteil des reinen Datenrumgeschaufels sollte den des eigentlichen Zeichnens um ein vielfaches übersteigen. Das wollte ich damit ausdrücken Und ob die Daten nun durchs RAM oder durch den Texturspeicher gejagt werden ist dann auch fast egal. Genau genommen ist das gerade wegen des sich ständig und in so großem Umfang ändernden Puffers eher GPU-feindlich. Man muss ja doch immer und immer wieder mit der CPU ran fürs Nachladen. Was dann noch für's Malen drauf geht sollte in beiden Fällen weitgehend vernachlässigbar sein, vorausgesetzt man beschränkt sich wirklich auf einfache Linien.

@Iwo: Problematisch ist sowas halt immer, wenn man Einzelwerte versucht zu verarbeiten. Im Bulk sind das kleine Mengen, ja. Da wäre es dann toll, wenn das Messgerät einen Puffer böte. Sowas wie "gib mal Daten der letzten Sekunde" statt 1000x in der Sekunde "gib mal das Datum".
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)

Geändert von Medium (18. Jun 2012 um 13:17 Uhr)
  Mit Zitat antworten Zitat
Iwo Asnet

Registriert seit: 11. Jun 2011
313 Beiträge
 
#8

AW: Chart-Komponente die 1000 Werte / sec verträgt

  Alt 18. Jun 2012, 13:14
Ich glaub aber immer noch, dass die echte Schwierigkeit das Aufzeichnen wird.
Das Ablegen auf Platte geht schnell genug. Eine SQL-DB wird da schon eine kleine Herausforderung, sollte aber möglich sein, denn 1000 Werte sind gerade mal 20k (Double + Zeitstempel+PK), lass es 30k sein.

Wäre auch denkbar, die Daten zunächst in eine Textdatei zu ballern und später per bulk insert in die DB zu pusten. Ist überhaupt eine DB am Start?
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.583 Beiträge
 
Delphi 12 Athens
 
#9

AW: Chart-Komponente die 1000 Werte / sec verträgt

  Alt 18. Jun 2012, 12:50
Im Delphi 7 gibt es bei mir 2 ActiveX-Chart-Komponenten
und ab D2007 liegt ein einfaches TChart bei.

Da sollte es auch so schon Einiges zum ausprobieren geben.
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#10

AW: Chart-Komponente die 1000 Werte / sec verträgt

  Alt 18. Jun 2012, 15:35
Anders formuliert: Versuche Deine Anforderungen der Messtechnik / Datenverarbeitung von denen der Visualisierung getrennt zu betrachten und auch getrennt um zu setzten. Ich denke, dass könnte Dich weiter bringen.
Das halte ich auch für den richtigen Ansatz.
Ich würde eine Klasse erzeugen um die Samples zu verarbeiten.
Diese Klasse bekommt als Input die ~5000-7000 Samples.
Als Output werden vorverarbeitete Daten erzeugt, die dann stressfrei angezeigt werden können.
Wenn z.B. der Oversampling-Faktor = 100 ist, dann werden immer 100 Samples aus dem Input zu einem Wert des Outputs (Durchschnitt bilden).
Desweiteren wird gleichzeitig noch der Minimum- und der Maximumwert berechnet.

Diese Daten (Durchschnitt, Minimum und Maximum) werden dann mit verschiedenen Farben zur Anzeige gebracht.
Wenn man mag kann man auch noch gleich den Median berechnen.

Durch diese Vorverdichtung der Daten (einstellbar über den OversamplingFaktor) kann man die Datenmenge immer so reduzieren, dass man sie ohne das System zu überfordern anzeigen kann.
Andreas

Geändert von shmia (18. Jun 2012 um 15:36 Uhr) Grund: tja die Rechtschreibung mal wieder
  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 11:33 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz