I am having difficulty using the WPF Chart Toolkit for real time data visualization.
As an example, I have an area chart that has seven series in it. Each series uses an in-memory collection for its source of data; each collection has about 22 elements that are X/Y coordinates. This is small set of data by almost any standard.
When I update the data on just one series at the rate of once-per-second by setting the series’ ItemSource property, my CPU usage for the application rises from 1% to an average of 12-15%, and occasionally spikes to the 20s. If I set all seven series
in a single method that is called at once-per-second, I see an average CPU usage of 60-65% with spikes as in the 90s. Reducing the interval to as little as once every five seconds didn't seem make much impact on performance either.
I have verified through code isolation that setting the ItemSource property is what is bogging down the CPU. I have also used the WPF Performance Suite (Wndows SDK) to verify that it is in fact the chart control that is responsible for the usage during
I’m not using an observable collection, because it is possible that most of my data in each series won’t closely resemble the data set from the previous update.
As my application runs, I have also witnessed continuous increase in memory (reaching over 100 megs) for this limited sample. I have not yet had a chance to performance tune the memory aspect of things, so this might reflect some needed optimizations.
Based on this, I don’t see how it could be used in a lot of “real time visualization” scenarios such as instrumentation applications—especially where larger sets of data might be required, multiple charts per screen, and/or other
applications need to be running in the background.