WinForms Charts - Performance Improvements (v18.1)

17 April 2018

For our Windows Forms ChartControl, performance is one of our highest development priorities. In the upcoming v18.1 release, we had the goal of improving rendering performance for High DPI resolutions. We also optimized the internal data processing algorithms to minimize the amount of memory allocated by the ChartControl.

DirectX Rendering

To render 2D charts, the existing ChartControl implementation used the GDI+ API exclusively. Given the performance of this API, large data visualizations on 4K displays were slow, especially in real-time applications.

We examined some possible solutions and decided to use hardware accelerated DirectX rendering, which is already supported by our Grid Control.

In our tests, the resulting rendering speed is up to nine times as fast as GDI+ mode in UHD resolution (up to four times as fast in Full HD).

Rendering Speed

Please note that while the rendering in DirectX mode is meant to be the same as in GDI+ mode, there are a few minor exceptions. For example, we’re having some issues with scale break rendering at this time, which we hope to resolve before release time. It is probably to be expected that a different rendering platform can generate slightly different results for complex visualizations, so we can’t guarantee pixel-perfect copies of the GDI+ renditions.

Optimized Data Processing

We have redesigned internal data structures used to store information in data-bound mode, in order to minimize memory consumption of the ChartControl. This chart illustrates the impressive results, with memory consumption down about 60%.

Memory Usage

Crosshair Cursor Optimization

We achieved a final remarkable improvement in our Crosshair Cursor implementation. In v18.1, the Crosshair Cursor is displayed immediately and without lag, even in real-time charting applications where a large numbers of Series items are displayed simultaneously.

The following animated image is quite large, my apologies in case it takes a few moments to load! I decided to include it anyway since it illustrates our improvements nicely. Note how, for the v17.2 chart, the horizontal scrolling of values stops completely when the mouse with the Crosshair Cursor is being moved. For v18.1, the same scrolling animation continues unchanged in the same scenario.

Crosshair Cursor Optimization

4 comment(s)
Martin Stuij

Nice work!!!

17 April, 2018
Engº Silvio Cruz

Awesome works, for real time monitoring application that is impressive.

Looking forward for all the controls migrate to Direct-X thought.

Good Work.

17 April, 2018
Alvis Kums


17 April, 2018

I Want This!!

17 April, 2018

Please login or register to post comments.