Using TDBCHart v8.02 I have a dataset connected to 4 TCHarts and collect approx 20,000 datpoints a day (every 5 seconds), which are displayed as 3D Lines.
I add to the dataset as I collect data and call Refreshdata after each datapoint. As you can guess at the begining the graph updates quickly, but as the data grows it takes more and more time to graph the data.
Instead of updating every datatpoint I am using a timer to call RefreshData every 10 seconds and only refresh the graph that is currently showing.
Is there a better way?
Thank you for your time.
Refreshdata - every 5 seconds
-
- Site Admin
- Posts: 14730
- Joined: Mon Jun 09, 2003 4:00 am
- Location: Banyoles, Catalonia
- Contact:
Hi Stevez,
Yes, I recommend you to have a look at the Real-time Charting article here and the speed examples at the new features demo, available at TeeChart's program group.
Hope this helps!
Yes, I recommend you to have a look at the Real-time Charting article here and the speed examples at the new features demo, available at TeeChart's program group.
Hope this helps!
Best Regards,
Narcís Calvet / Development & Support Steema Software Avinguda Montilivi 33, 17003 Girona, Catalonia Tel: 34 972 218 797 http://www.steema.com |
Instructions - How to post in this forum |
Thanks Narcis. We are looking to maintain the 3D characteristics and the article you directed me towards deals with TFastLineSeries, TPointSeries.
Is there a fast version of the 3D line?
We collect data daily and the amount of data linearly increases the time it takes toi draw a graph. I thought of using a timer and refreshing the graph every 30 seconds. My problem is that near the end of the day it takes 700msec to draw the graph...
The article recommends streamlining features, which do you recommend for the 3D line.
Thanks again.
Is there a fast version of the 3D line?
We collect data daily and the amount of data linearly increases the time it takes toi draw a graph. I thought of using a timer and refreshing the graph every 30 seconds. My problem is that near the end of the day it takes 700msec to draw the graph...
The article recommends streamlining features, which do you recommend for the 3D line.
Thanks again.
-
- Site Admin
- Posts: 14730
- Joined: Mon Jun 09, 2003 4:00 am
- Location: Banyoles, Catalonia
- Contact:
Hi Stevez,
In that case I recommend you to use series style you wish and try to use as many hints in the article as possible. All of them are for improving performane.
In that case I recommend you to use series style you wish and try to use as many hints in the article as possible. All of them are for improving performane.
Best Regards,
Narcís Calvet / Development & Support Steema Software Avinguda Montilivi 33, 17003 Girona, Catalonia Tel: 34 972 218 797 http://www.steema.com |
Instructions - How to post in this forum |
Speeding Up a 3D graph when you know your data
Hi,
A followup on my last question and trying to squeeze out some performance. I need some feedback and validation
What I know:
My data sampled sequentially and time stamped, so there is no need for the controller to order the data :
Series1.XValues.Order := loNone;
Series1.XValues.Order := loNone;
I know min max values some graphs [0%..100%] oters [-100%..100%]
So in Controller at design time I set
Chart.Axis.LeftAxis.Automatic = False & Min=0, Max =100
I have bottom Axis.Auto = True
Measured data is sampled on a 200msec timer and stored to a CSV file.
When someone selectes a device to monitor, if it is not the current device
I load the chart a Memdataset with the stored data and call RefreshData.
If device is active then I add data directly to the memdataset.
(here I could as the article decribes write directly to the Array)
I also did:
Series1.XValues.Order := loNone;
Series1.XValues.Order := loNone;
Canvas.ReferenceCanvas.Pen.OwnerCriticalSection := nil;
Series1.LinePen.OwnerCriticalSection := nil;
Axes.FastCalc := True;
As data is added, I believe that I am waisting time calling RefreshData, is there an alternative that would guarantee that the new data is shown? A day can have up to 50,000 data points. As the day goes by the size of the graph increases significantly...
Looking at Windows Task Manager I think that I could specify that a "Real-time" graph show the most recent 10,000 data points.
Currently I monitor how long it takes to draw the graph and if it is less than 50ticks I graph update graph at every data point (via RefreshData) if it axceeds 50msec I ahow a refresh pushbutton that calls RefreshData.
Thanks in advance for your time and help.
I love your controller!!!
A followup on my last question and trying to squeeze out some performance. I need some feedback and validation
What I know:
My data sampled sequentially and time stamped, so there is no need for the controller to order the data :
Series1.XValues.Order := loNone;
Series1.XValues.Order := loNone;
I know min max values some graphs [0%..100%] oters [-100%..100%]
So in Controller at design time I set
Chart.Axis.LeftAxis.Automatic = False & Min=0, Max =100
I have bottom Axis.Auto = True
Measured data is sampled on a 200msec timer and stored to a CSV file.
When someone selectes a device to monitor, if it is not the current device
I load the chart a Memdataset with the stored data and call RefreshData.
If device is active then I add data directly to the memdataset.
(here I could as the article decribes write directly to the Array)
I also did:
Series1.XValues.Order := loNone;
Series1.XValues.Order := loNone;
Canvas.ReferenceCanvas.Pen.OwnerCriticalSection := nil;
Series1.LinePen.OwnerCriticalSection := nil;
Axes.FastCalc := True;
As data is added, I believe that I am waisting time calling RefreshData, is there an alternative that would guarantee that the new data is shown? A day can have up to 50,000 data points. As the day goes by the size of the graph increases significantly...
Looking at Windows Task Manager I think that I could specify that a "Real-time" graph show the most recent 10,000 data points.
Currently I monitor how long it takes to draw the graph and if it is less than 50ticks I graph update graph at every data point (via RefreshData) if it axceeds 50msec I ahow a refresh pushbutton that calls RefreshData.
Thanks in advance for your time and help.
I love your controller!!!
-
- Site Admin
- Posts: 14730
- Joined: Mon Jun 09, 2003 4:00 am
- Location: Banyoles, Catalonia
- Contact:
Hi Stevez,
What about using Series's CheckDataSource method?As data is added, I believe that I am waisting time calling RefreshData, is there an alternative that would guarantee that the new data is shown? A day can have up to 50,000 data points. As the day goes by the size of the graph increases significantly...
Best Regards,
Narcís Calvet / Development & Support Steema Software Avinguda Montilivi 33, 17003 Girona, Catalonia Tel: 34 972 218 797 http://www.steema.com |
Instructions - How to post in this forum |