I have two real-time data sets I want to display, with a maximum of about 200,000 data point per series. Filling in this series up to the first 200,000 points works fine, but my UI performance drops considerably once I start trying to shift out the oldest points to make room for the new ones. My sample rate is 10,000 samples per second, and they're coming in about 32 samples at a time.
I've implemented the approach here in the forum post below the update the DataPoint X and Y values as my new data comes in rather than removing and adding data points, but this still does not perform well enough - my UI locks up for several seconds before any update is shown once I reach the maximum size of my series.
https://www.telerik.com/forums/radobservablecollection-o(1)-item-removal#3808663
I also tried implementing the AsyncData example, but it has the same issue because the series updates only happen one data point at a time, so the entire list gets shifted for every point that I add, rather than shifting the list in larger increments.
For performance, I would like to change out the underlying storage of the series data points with a queue so I can have a near constant time performance shifting out the old data and shifting in the new data, without needing to go through the entire series every time. However, I cannot inherit from any of the ChartSeries base classes because some of the abstract properties use internal types.
Is there any other solution for improving the performance with around 200,000 data points in real-time?
Thanks,
Brandon