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

I ran this simple test on Syncfusion, Infragistics and ComponentOne

I really wanted to use Syncfusion because of some pluses like your DocIO library etc. But the Chart is not performing well at all compared to competitors.

All 3 are dead simple Line Scatter plots.

I tried throwing 10,000 points at each.

Syncfusion rolled over and died on resize, used the most memory, and axis labels collided.

C1 Didn't blink an eye on resize, used 1/3 the memory, and axises were intelligently calculated.

Infragistics was close behind C1 but coding is a very tedious. But you coudl definitely see it drawing slow on resize.

Just sharing my experience in case I'm doing something really dumb and give you guys a chance to perhaps fix it.

cs file

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using Syncfusion.Windows.Tools.Controls;
using Syncfusion.Windows.Chart;
using C1.WPF.C1Chart;
using Infragistics.Windows.Chart;

namespace EssentialRibbonApplication
{
///
/// Interaction logic for Essential WPF RibbonWindow1.xaml
///

public partial class RibbonWindow1 : RibbonWindow
{
public RibbonWindow1()
{
InitializeComponent();

// Try Bump each of these to 10000 one at a time

int numpoints_sync = 10; // 216K @ 10000 Unusable Resize Axis Labels Colide
int numpoints_c1 = 10; // 68K @ 10000 Fast Resize Axis Labels Perfect
int numpoints_infra = 10; // 68K @ 10000 Slugish Resize Axis Label Good but sometimes tiny font

#region syncfusion
ChartListData x = new ChartListData();
for (int i = 0; i < numpoints_sync; i++)
{
x.AddPoint(i*i, i*2+1);
}
syncdata.Data = x;
#endregion


#region C1
var v = new DoubleCollection();
var w = new DoubleCollection();
for (int i = 0; i < numpoints_c1; i++)
{
w.Add(i*i);
v.Add(i * 2 + 1);
}
s1.Values = v;
s1.XValues = w;
#endregion

#region infragistics
Series f = new Series();
f.ChartType = Infragistics.Windows.Chart.ChartType.ScatterLine;
for (int i = 0; i < numpoints_infra; i++)
{
Infragistics.Windows.Chart.DataPoint p = new Infragistics.Windows.Chart.DataPoint();
var l = new ChartParameter();
l.Type = ChartParameterType.ValueX;
l.Value = i*i;
var m = new ChartParameter();
m.Type = ChartParameterType.ValueY;
m.Value = i*2 + 1;
p.ChartParameters.Add(l);
p.ChartParameters.Add(m);
f.DataPoints.Add(p);
}
xamChart1.Series.Add(f);

#endregion

}
}
}

xaml

xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:syncfusion="http://schemas.syncfusion.com/wpf"
Title="RibbonWindow1" Height="408" Width="1013" xmlns:igCA="http://infragistics.com/Chart">






















4 Replies

JN Jayakumar Natarajan Syncfusion Team August 24, 2009 09:55 PM UTC

Hi George,
Thanks for evaluating Syncfusion products.

We have a 'FastLine' ChartType that just creates one content presenter and does direct rendering. You could customize the Axis labels with different formats to avoid overlapping.

Please have a look at the attached sample and let us know you have any specific questions.

Thanks,
Jay



LineChart_25fe41cd.zip


GM George Mills August 25, 2009 04:04 PM UTC

The FastLine performance is good.

The "custom" axis is a work around, but the chart should be smart enough to do the right thing on it's own. Rotate text can use up a lot of margin too.

As I resize the other charts they add/remove labeled tics, adjust fonts and in some even cases automatically rotate it.

A "smart" axis is a huge part of good chart.


JN Jayakumar Natarajan Syncfusion Team August 25, 2009 09:17 PM UTC

Hi George,
Thanks for the update. We will consider the smart axis as a FeatureRequest and get this implemented for the upcoming release.

For now, you could handle the Chart sizechanged event and adjust the axis's IntervalCount and Grid's TicksPerIntervalCount to get this working. We will work on a sample and will update you.

Best regards,
Jay


PI Poorani Idhaya Bala M.A Syncfusion Team August 28, 2009 05:24 AM UTC

Hi ,

Thanks for your interests in Syncfusion products.

We have handled the Chart sizechanged event and adjust the interval to achieve the smart axis effect. Please find the modified sample . Let us know if you have any questions.

Thanks,
Poorani





LineChart_89317_62720b29.zip

Loader.
Live Chat Icon For mobile
Up arrow icon