SciChart® the market leader in Fast WPF Charts, WPF 3D Charts, and iOS Chart & Android Chart Components
Given the 2D heat map sample, could you suggest how to improve performance so that UI remains responsive. This is somewhat similar to what we would in worst case need for our application. There is room for tweaking the updates to UI and how things get displayed or using a non MVVM solution, etc.
Thank you for your help!
I’m talking to you on support tickets about this so I don’t want to go into much detail (as requires a lot of investigation from both our sides).
Save to say:
— If you set SciChartSurface.RenderPriority = RenderPriority.Low on the heatmap series it will put their drawing priority just below mouse-events on the WPF Application, thus keeping the application responsive.
Actual performance improvement is something that has to be done on the Heatmap series as our implementation is not optimal. We could get it 10x faster but would require an internal re-write. A lot of people have requested faster Heatmap performance (it is a popular feature!) so we are considering supporting this in the near(ish) future.
Do reply back here what your tips were to improve perf but for anything more technical lets keep it on the support ticket.
Update: SciChart WPF v5 and above has vastly improved heatmap performance
Read the full article here: https://www.scichart.com/scichart-wpf-v5-released/
New Heatmap Controls
The FastHeatmapRenderableSeries has been made obsolete, and replaced with two new controls!
The FastUniformHeatmapRenderableSeries, and the FastNonUniformHeatmapRenderableSeries.
These updated heatmap controls provide additional performance and
- PaletteProvider supported in Heatmap (override cell color)
- Point Metadata supported in Heatmap (tag cell data)
- Support for massive heatmaps: 10k * 10k!
- Performance: New Heatmap series up to 10x faster when DirectX Enabled.
In the sample what we need to do is display both the old and new data that overwrites it. This was initially done using two data series, where the old data had a set opacity to distinguish it from the new data. This caused additional load on rendering due to doubling of data points. To decrease the number of points I used only one data series containing both old and new data. When new data arrives it overwrites the old data. To display the difference between old and new data to the user a box annotation set to semi transparent color was overlayed over the old data. The annotation box size is adjusted on every data update to only cover the old data.
Other tweaks were to not update the heat map on every new line that arrives. Since min and max values can change on every update, changes to data series min max values was also deferred until heat map is redrawn. Not doing that would cause a redraw. Minor tweak was also to fix the size of heat map to prevent re-rendering due to dock container placement
Please login first to submit.