Hello Brian, Doni
Thank you for your feedback. Here is a list of some simple changes that can improve the performance in large data scenarios at the moment:
- Use fewer data points -- typical performance guidance for Silverlight and WPF recommends capping the total number of UI elements in the low- to mid-hundreds. Given that each of the chart item instances instantiates around 3-5 UI elements, trying to render a chart with 1000 data points can start to bog the system down quite fast. Note that the Q1 2010 edition of RadChart will be able to handle hundred of thousands of data points thanks to its new Virtual Scrolling and Data Sampling mechanisms that are currently being developed.
- Disable animations -- you have already done that.
- Simplify the chart item control template -- e.g. the Line item template contains by default item label as well as point mark visual that can be removed (as they are relatively insignificant when rendering thousands of records); with lots of points the sheer number of UI elements simply bogs the system down as discussed above so if you cannot reduce the data points, you will need to simplify the chart item control template (note that simply changing their Visibility will not do the trick, they should be physically removed from the template).
- Specify fixed axis range manually -- if your data changes a lot but you know the ranges over which it will vary, you can disable the Axis auto-range algorithm and specify the Axis range manually -- this will probably lower the processing time a bit.
- Add the points more efficiently (ObservableCollection scenario) -- the control is built around a model where any changes to the data are automatically shown on the screen. This is accomplished by detecting classes that implement the INotifyPropertyChanged interface and collections that implement the INotifyCollectionChanged interface and registering to find out about changes as they occur. However, this system can be counterproductive in one scenario: starting with an empty collection and adding a bunch of data points all at once. By default, each new data point generates a change notification which prompts RadChart to re-analyze the data, re-compute the axis properties, re-layout the visuals, etc. It would be more efficient to add all the points at once and then send a single notification to the control that its data has changed. Unfortunately, the otherwise handy ObservableCollection class doesn't offer a good way of doing this but it is pretty easy to add:
Hope this helps.
Regards,
Manuel
the Telerik team
Watch a
video
on how to optimize your support resource searches and
check out more tips
on the blogs.
Follow the status of features or bugs in
PITS
and vote for them to affect their priority.