Hi, all.
My application uses XamChart to display some dynamic graphs with lot of DataPoints.
I face serious performance problem.
In my test application I placed 4 XamChart components with 1 ScatterLine Series.
All charts are bind to the same observable collection
Each 1 second I add point to this collection.
To improve performance I use Performance RenderingMode
xamChart1.Scene.GridArea.RenderingOptions.RenderingMode = RenderingMode.Performance
Also I handle RefreshEnabled chart property
After about 5 minutes my test application uses 50% CPU and stops reacting on user input.
I opened the issue in the Infragistics support and received following
"We have experienced same performance issue so we have logged this behavior with our developers in our tracking system, with an issue ID of 12758."
Unfortunately they trying to fix this bug from January 21 (more then month)
Does anybody meet same performance problems with this control?
What is the possible solutions ?
Thanks in advance,
the sample project attached to that bug report has 6 charts with 5 series each, but based on that i think you have just met the performance threshold for rendering that many charts in under one second.
to improve performance, one thing i can suggest is adding DataPoints to a series manually, rather than using the series.DataSource property. when i profiled this application for performance, retrieving the value of each datapoint through databinding was one of the more expensive operations.
another thing that might help, if it's possible in your application, is to remove the point at index 0 before adding each point, after a certain limit of datapoints has been reached. that way you can limit the number of points to be displayed for each chart.
increasing the interval for your timer and doing batch or on-demand updates to each chart, instead of updating each second, might be another way to work around this performance limitation.
Hi, igdavidn.
Thank you for quick answer.
I tried to work with DataPoints instead of binding to series.DataSource binding.
It really improve my performance. Now it takes 15 - 20 % of CPU instead of 50%
According to restriction of DataPoints count - I've already implemented this in my real (not test) application.
But I still have to display 300 points per series line.
I update DataPoints with 1 second interval, but I refresh the graph in 3 seconds interval.
Can you propose any additional performance improvement advices ?
Regards,
that's as much as i can recommend. if you have 4 series * 300 points, it should be performing fairly well. are there still problems?
The core functionality of my application is displaying real-time dynamic graphs.
I cannot restrict the user to open only 4 graphs.
Also performance very depends on client computer parameters. I cannot request from user use only very strong computer.
Now I understand that XamChart control is not designed to display a lot of real time graphs.
I should find out this before choosing this control.
May be I will choose another one.