Override underlying series data storage

1 Answer 104 Views
ChartView
Brandon
Top achievements
Rank 1
Veteran
Brandon asked on 05 Sep 2021, 07:32 PM

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

1 Answer, 1 is accepted

Sort by
0
Dinko | Tech Support Engineer
Telerik team
answered on 08 Sep 2021, 10:26 AM

Hi Brandon,

Thank you for the provided details.

The performance downgrade is observed because of the huge amount of data points and the live updates. Note that the chart has a built-in UI virtualization which means that it renders only the data points in the viewport. However, there is no data virtualization, and calculations for all data points will be made.

Have you tried to use one of the build-in rendering options of the chart? Another approach will be to use the chart's sampling feature. I am guessing that the chart in your project is displaying many data points in the viewport, which is not readable. You can sample the data to display a smaller number of points. 

If you can isolate your project in a sample project, I could take a look at your implementation and think of a possible solution to improve the performance.

Regards,
Dinko
Progress Telerik

Virtual Classroom, the free self-paced technical training that gets you up to speed with Telerik and Kendo UI products quickly just got a fresh new look + new and improved content including a brand new Blazor course! Check it out at https://learn.telerik.com/.

Tags
ChartView
Asked by
Brandon
Top achievements
Rank 1
Veteran
Answers by
Dinko | Tech Support Engineer
Telerik team
Share this question
or