I am working on an application to show EEG measurements in real time. I need to have a window with 8 or 16 different charts, one for each channel.
I followed the example code for real time charts, including the suspend and resume updates handling. It works well enough for up to two channels of data; the two charts draw quick enough that you get about 5Hz update rate. However, once you have eight charts drawing, the update rate slows down to less than 1Hz. I have not even bothered trying it with the max load of 16 channels.
I thought it was something in my code, so I went back to the sync fusion sample for real time charts and modified the sample to have 8 charts with one series (instead of one chart with 3 series), and also modified the sample to extend the amount of data plotting to be similar to my situation (I am trying to show 8 charts with 10 seconds of EEG data at 250 samples/second, therefore I am trying to plot 2500 points on 8 charts with each cycle).
The sync fusion example code runs almost as slow as my code when trying to plot 8 charts. It runs at over 20% CPU on my machine and struggles to update at 2 Hz or better.
I suspect that one of the big performance problems is the binding to the data source. Is there a way to use SYncFusion charts for real time updates without binding. Can I set the data series directly in code to get it to work faster?
FWIW, I have the same code running in a Xamarin Forms mobile app on Android and the chart drawing time is much faster (although on Android you can only 'see' four charts at at time on the screen, so maybe this is a factor).
Any insight or help is appreciated
Attachment:
GBsSample_HowtocreatearealtimeChartwithWPFmaster_ef4075d6.zip