How can we improve the update performance for an XamDataChart using the following?
a. 15 ScatterLineSeries with 1 new data point added per second and data in an ObservableCollectionb. 10,000 - 40,000 data points per linec. No data point markers, no fancy line stylesd. Data is added to each series at random times during the 1 second interval (i.e., comes from a serial device) and also comes in a random order. e. These updates come in on 1 thread per data series and all updates to the observable collection are routed through the graph UI threadf. X axis is time the data was collected (i.e, cannot use LineSeries)g. The xamdataChart built-in zoom mini-map widget is located in the lower right hand corner.
This graph functions with good speed for about 1 hour and then becomes unresponssive. For example, if you zoom in when the graph has good performance, wait, and then keyboard up/down/left/right after 1 hour, it take 20-30 seconds to shift the zoomed in are by 1 keystroke.
The CPU after 1 hour was a flat 25% of a 4 core CPU machine. Our VS 2010 profiling showed that 75% or more of the time was spent in a UI rendering code (maybe due to refreshing the graph 15 times each second).
Is there a way to set the Infragistics XamDataChart to refresh itself every X miliseconds instead of on every data point added to the graph?
Lastly, we usually run these graphs zoomed all the way out to show the entire series data curve.
Hello,
I have been looking into your question and this behavior is not unexpected, considering the test conditions that you have mentioned.
XamDataChart is highly optimized control, but still there are circumstances which can seriously affect the performance. The worst case comes with the random data usage. If you have a data source that contains of a list of million random elements and you measure the performance metrics with the same data after being sorted, the difference should be significant.
In the following link you will find a conversation between with a client who has very similar case to yours: ScatterLineSeries with thousands of random data points, that has an unsatisfactory performance:
http://blogs.infragistics.com/forums/p/47595/283799.aspx
Going through the forum you will notice that there are some performance optimization suggestions. They are described as well with some few other approaches in the following page of our documentation:
http://help.infragistics.com/Help/NetAdvantage/WPFDV/2011.1/CLR4.0/html/xamDataChart_Chart_Performance.html
Please take a look at the provided samples and let me know if you have some more questions on the discussed topic.
You will
Sincerely,
Ekaterina
Developer Support Engineer
Infragistics, Inc.
www.infragistics.com/support