We use cookies to give you the best experience on our website. If you continue to browse, then you agree to our privacy policy and cookie policy. Image for the cookie policy date
close icon

Chart performance

Hi. I am trying to plot a line chart consisting of 50 series each with approx 4000 points. For this data set the chart uses more than 30 seconds to repaint on a fairly fast PC. For comparison, Excel repaints a chart with the same data in less than a second. Is the Chart component that much slower or am I doing something wrong? I am using a DateTime x-axis and provides the data to the chart using my own implementation of IChartSeriesModel. I know that my datasource can provide the data a lot faster than the chart repaints, so this is not the bottleneck. I have also tried to use the built in series model and this didn''t seem to help. Is there anything else I can do to improve performance?

7 Replies

DJ Davis Jebaraj Syncfusion Team May 18, 2005 09:47 PM UTC

Hi, What is the type of Chart you are plotting? It is possible that Excel is grouping some of the points to form a smaller set of points that represent the outline of the rendered chart in case the screen real estate is too small to display all 4000 points at once on the screen. Essential Chart does not do such optimizations at present. We will work on adding this feature if you can tell us what type of Chart you are using. Thanks, Davis


AD Administrator Syncfusion Team May 19, 2005 08:22 AM UTC

Hi Davis. Thanks for your reply. I am using ChartSeriesType.Line and version 3.2.1.0. I think that pooling the points is mainly of interest if the plot is smooth, i.e. little variation between neighboring points. This is normally not the case for my data. Also, when I have smooth data I will consider reducing the data set myself before handing it to the chart. Therefore, I don''t see the need for pooling in the chart. However, if the basic plotting speed can be improved, I would be very happy. In addition to charting large datasets as in the example above, I am interested in charting smaller datasets with "real time" performance. Do you know where most of the time is spent by the chart? Is the time spent by the basic .net drawing functions or is it spent on some other calculations performed by the chart? In the first case I guess it would be hard to improve performance, but in latter case there should be room for improvement.


DJ Davis Jebaraj Syncfusion Team May 23, 2005 04:33 PM UTC

Hi, Thanks for the clarification. I have been working on the optmizations and I will update this thread when I have more information. Thank you for your patience. Regards, Davis


AD Administrator Syncfusion Team June 24, 2005 11:56 AM UTC

I am also interested in any chart optimizations you can do for the chart with many points. For example, I use a line chart to plot temperature vs time, and depending on settings, there may be a history of several thousand temperatures that are displayed on the chart. This is not critical for me, I can always limit the number of points, but the extra performance would certainly be nice and give better history plots.


AD Administrator Syncfusion Team June 24, 2005 11:59 AM UTC

Btw, I also use IChartSeriesModel, supplying both x and y.


SM Simon Martin June 8, 2006 08:39 AM UTC

Hi, I was wondering whether you would be able to help me with the following performance issue: I have been trying to plot a timeseries with over 300 series, each with over 100 data points, using Syncfusion 4.2.0.37 On a reasonably fast machine, the chart is taking a couple of seconds to draw in the first place and a further couple of seconds to re-draw everytime the window containing the chart is re-sized or moved. Is there anything that I can do to speed up the plotting of the chart and the the speed with which it refreshes when the chart is re-sized? This is the code that I am using to add the data points: foreach (TimeSeries series in TimeSeriesChart.Series) { // add series points for (int year = TimeSeriesChart.StartYear; year <= TimeSeriesChart.EndYear; year++) { chartSeries.Points.Add(year, series.Values[year]); } ChartControl.Series.Add(chartSeries); } Many thanks for your help, Simon


GM Geetha M Syncfusion Team June 9, 2006 12:02 PM UTC

Hi Simon, Thanks for bringing this issue to our attention. Could you please send us a simple sample application which illustrates your way of populating the data points to the chart so that it would help us to find a better solution? Thanks for your interest in Syncfusion products. Regards, Geetha

Loader.
Live Chat Icon For mobile
Up arrow icon