Some of our charts plot data consisting of descending X values (e.g. a voltage range from 0 to -1000). These charts worked fine in v3.1, but having migrated to 6.5 they now throw the “unsorted” exception as per your performance tips & tricks page. Am I okay in this scenario to enable unsorted data (AcceptsUnsortedData = true), or will the descending X values still cause issues for SciChart?
I guess the proper solution would be to reverse the start & end values, so X is always ascending (-1000 to 0), but this would be a decision for our stakeholders as to whether they want to see the charts like this.
On a vaguely related note, your performance tips & tricks page mentions the “visual xccelerator engine”. Is there any reason why I can’t enable this application-wide, for every chart? Are there any risks or downsides to using this feature? Just wondering why it’s not enabled by default if it’s so beneficial.
Some answers below
throw the “unsorted” exception as per your performance tips & tricks page
Yes, reason is that sorted data in X confers large performance benefits for things like hit-test (tooltips) and rendering. The exception si a warning as we found too many people were simply unaware they were losing performance. You can stop the warning by setting DataSeries.AcceptsUnsortedData = true. However this will then incur the performance dropdown.
Alternatively, you can append data sorted in X and set Axis.FlipCoordinates = true. This will get the exact same visual effect but will get you all the performance benefits.
Finally potentially we could enable performance enhancements for X-values sorted descending however that would be a feature-request and we would have to prioritise it, or, build as custom work.
Is there any reason why I can’t enable the Visual Xccelerator engine application-wide, for every chart?
Yes you can do this. I would use an implicit style, like this. This will apply the DirectX hardware acceleration application wide
<Style TargetType="s:SciChartSurface"> <Setter Property="s:VisualXcceleratorEngine.IsEnabled" Value="True"/> </Style>
This will result in significant performance improvements, in some cases an order of magnitude or two over software rendering.
Why don’t we enable this by default? Simply our policy is to minimise breaking changes and maximise backward compatibility. You are working on v3 – v6 which is a huge jump (most of that jump occurred from v3 to v4, subsequent releases have had far fewer breaking changes). We like to ensure new features are well tested before rolling them out to the entire userbase.
That being said, Visual Xccelerator engine should work on a very wide range of hardware and will drop down to software rendering when DirectX is not available.
Let me know if that helps
Please login first to submit.