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).
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%.
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.