How to optimize line series performance
Posted: Fri Mar 15, 2019 9:21 am
Hi,
Using the .Net Version=4.1.2018.5046 of TeeChart we observe slow performance of standard operations (render, zoom etc.).
As an example create 5 line series each with a million points (in a standard Winform).
The time to render the plot is improved if we use a FastLine series but not significantly.
When we compare performance with other similar Net charting software even with moderate size data sets TChart is significantly slower (i.e. takes 10s of seconds vs ms).
We would be interested in how we could optimize the performance of the plots.
Code extract
============
int numberPoints = 1000000;
Steema.TeeChart.Styles.FastLine lineSeries1 = new Steema.TeeChart.Styles.FastLine();
Steema.TeeChart.Styles.FastLine lineSeries2 = new Steema.TeeChart.Styles.FastLine();
Steema.TeeChart.Styles.FastLine lineSeries3 = new Steema.TeeChart.Styles.FastLine();
Steema.TeeChart.Styles.FastLine lineSeries4 = new Steema.TeeChart.Styles.FastLine();
Steema.TeeChart.Styles.FastLine lineSeries5 = new Steema.TeeChart.Styles.FastLine();
tChart1.Aspect.View3D = false;
tChart1.Aspect.ClipPoints = true;
tChart1.Graphics3D.BufferStyle = Steema.TeeChart.Drawing.BufferStyle.OptimizedBuffer;
// bottom axis - pipe length
Steema.TeeChart.Axis bottomAxis = tChart1.Axes.Bottom;
bottomAxis.Title.Visible = true;
bottomAxis.Title.Text = "Some data";
// left axis - property
Steema.TeeChart.Axis leftAxis = tChart1.Axes.Left;
leftAxis.Title.Visible = true;
lineSeries1.Color = Color.Blue;
lineSeries1.DrawAllPoints = false;
lineSeries1.FillSampleValues(numberPoints);
lineSeries2.Color = Color.Red;
lineSeries2.DrawAllPoints = false;
lineSeries2.FillSampleValues(numberPoints);
lineSeries3.Color = Color.Green;
lineSeries3.DrawAllPoints = false;
lineSeries3.FillSampleValues(numberPoints);
lineSeries4.Color = Color.Brown;
lineSeries4.DrawAllPoints = false;
lineSeries4.FillSampleValues(numberPoints);
lineSeries5.Color = Color.Orange;
lineSeries5.DrawAllPoints = false;
lineSeries5.FillSampleValues(numberPoints);
tChart1.Series.Add(lineSeries1);
tChart1.Series.Add(lineSeries2);
tChart1.Series.Add(lineSeries3);
tChart1.Series.Add(lineSeries4);
tChart1.Series.Add(lineSeries5);
Using the .Net Version=4.1.2018.5046 of TeeChart we observe slow performance of standard operations (render, zoom etc.).
As an example create 5 line series each with a million points (in a standard Winform).
The time to render the plot is improved if we use a FastLine series but not significantly.
When we compare performance with other similar Net charting software even with moderate size data sets TChart is significantly slower (i.e. takes 10s of seconds vs ms).
We would be interested in how we could optimize the performance of the plots.
Code extract
============
int numberPoints = 1000000;
Steema.TeeChart.Styles.FastLine lineSeries1 = new Steema.TeeChart.Styles.FastLine();
Steema.TeeChart.Styles.FastLine lineSeries2 = new Steema.TeeChart.Styles.FastLine();
Steema.TeeChart.Styles.FastLine lineSeries3 = new Steema.TeeChart.Styles.FastLine();
Steema.TeeChart.Styles.FastLine lineSeries4 = new Steema.TeeChart.Styles.FastLine();
Steema.TeeChart.Styles.FastLine lineSeries5 = new Steema.TeeChart.Styles.FastLine();
tChart1.Aspect.View3D = false;
tChart1.Aspect.ClipPoints = true;
tChart1.Graphics3D.BufferStyle = Steema.TeeChart.Drawing.BufferStyle.OptimizedBuffer;
// bottom axis - pipe length
Steema.TeeChart.Axis bottomAxis = tChart1.Axes.Bottom;
bottomAxis.Title.Visible = true;
bottomAxis.Title.Text = "Some data";
// left axis - property
Steema.TeeChart.Axis leftAxis = tChart1.Axes.Left;
leftAxis.Title.Visible = true;
lineSeries1.Color = Color.Blue;
lineSeries1.DrawAllPoints = false;
lineSeries1.FillSampleValues(numberPoints);
lineSeries2.Color = Color.Red;
lineSeries2.DrawAllPoints = false;
lineSeries2.FillSampleValues(numberPoints);
lineSeries3.Color = Color.Green;
lineSeries3.DrawAllPoints = false;
lineSeries3.FillSampleValues(numberPoints);
lineSeries4.Color = Color.Brown;
lineSeries4.DrawAllPoints = false;
lineSeries4.FillSampleValues(numberPoints);
lineSeries5.Color = Color.Orange;
lineSeries5.DrawAllPoints = false;
lineSeries5.FillSampleValues(numberPoints);
tChart1.Series.Add(lineSeries1);
tChart1.Series.Add(lineSeries2);
tChart1.Series.Add(lineSeries3);
tChart1.Series.Add(lineSeries4);
tChart1.Series.Add(lineSeries5);