So last week we gave you a Vision update showing some of the directions we want to work toward in 2014. We also release a survey to you to ask for your feedback on SciChart. Well wow, we got a great response! So many positives, some negatives, we have taken it all on board and will do our best to wow you in in the coming year.
Here’s a little update about what we have been working on (other than supporting SciChart v2.x) and will be releasing very soon* as part of SciChart v2.5 – Interim Update.
*Estimated release date, year end 2013
> C++ Module and SIMD Powered (Vectorized) Resampling
Most of our customers use the WPF Edition of SciChart. Most of them need more performance. We have built a dedicated C++ module which will auto-detect 32 or 64bit and run some of our core algorithms in native code for WPF-only.
One of these is resampling. SciChart resamples the data before rendering – we’ve managed to achieve up to 10x (1000%) speed improvement in resampling using a combination of hand-optimized assembly and Streaming SIMD Extensions (SSE2).
Resampling is just one facet of rendering performance, but this should really help in the case where you have massive datasets (tens, or hundreds of millions of data-points). This is also the beginning of the wider performance-enhancements we are researching as part of SciChart v3.
> Uneven Resampling / Improvements to Resampling
Our MinMax resampling algorithm would only work if the data was evenly-spaced on the X-Axis. In SciChart v2.5 you will be able to specify any time-series with unevenly spaced data, gaps etc… and it will still resample at a speed comparable or better than the old MinMax algorithm. This means you will be able to render large, unevenly distributed datasets that were previously not possible with SciChart.
> Auto-detection of Sorted/Unsorted DataSeries
It’s annoying to have to specify UnsortedXyDataSeries v.s. XyDataSeries right? We want to do away with this. SciChart v2.5 will just have one type of series, and will auto-adjust its Hit-Test and Resampling algorithms depending on whether the data is sorted in the X-Axis or not, and depending on the data-distribution of the data series. Of course, you will get massive performance benefits of having sorted data, so we still advise that you do this.
> Performance Improvements for DataSeries.Append
We’ve managed to more than double the speed of DataSeries.Append by moving out the Min Max calculations to another part of the rendering pipeline and optimising these in our C++/SIMD module. Block appends will still be faster but overall manipulating the DataSeries will be significantly faster in v2.5 than v2.2 and below.
> Parallel-rendering for Scatter Series
Drawing scatter-plots is an easily parallelizable task. We have introduced parallel processing for Scatter-plots for the HighSpeedRasterizer, achieving a 300%+ performance improvement on quad-core machines. Our internal test-suite is able to render 100,000 – 200,000 scatter points before performance becomes unacceptable, vs. approx 20,000-50,000 in SciChart v2.2.
> Save/Load Chart Settings
SciChart v2.5 will feature the ability to serialise Annotations to XML. Great if you want to create charts with annotations and save them down for later re-population.
We are also working on persisting the entire chart settings / configuration to and from XML.
> Multitouch (Work in progress)
We wish to complete a Pinch-Zoom modifier and enable all modifiers and annotation interations for multi-touch on Windows 7/8 based touch machines.
> Image Export (Work in progress)
We are working on image export – a hotly requested feature. At a minimum we will deliver image export to the current resolution. We are attempting to build export at user-specified resolution – a difficult task, considering we hijack the WPF rendering engine to achieve our record performance!
> Axis Improvements (Work in progress)
A huge swath of axis improvements are coming your way. We are working on:
- Templating axis titles / chart titles
- Allowing templated/styled axis labels (any font size, colour etc…)
- A static axis which will allow specifying exact number of ticks at fixed intervals, useful for scientific plots, including showing the ticks at the min/max of the axis.
- A Zoom Limit to allow Zooming to Extents to a custom defined range, or prevent zooming beyond this range.
- Allowing customisation of exact ticks values to show on the axis (TickProvider API)
All this and more will be available soon. We will be releasing a Beta to our customers first, then a full release soon after. Remember all our existing customers get upgraded for free, so don’t worry if you wish to buy SciChart licenses now, you will receive this version, and much more as well.
For those of you that have been with us since SciChart v1.x, there will not be any major API changes in this update as there were from v1.x to v2. This is purely an incremental improvement over SciChart v2.x, and a step towards what we want to achieve in the future.