Based on [this article](https://oxyplot.codeplex.com/discussions/281036) I'm using PlotModel.RefreshPlot(true) frequently to load live data, approximately 20 times per second or so, but the performance is not good. It is sluggish and lags behind.
I have 8 line series with 1000 samples/sec each, but reducing the data frequency does not seem to help much, so this does not seem directly related to drawing performance.
There are a few issues:
* RefreshPlot(true) seems to queue on the GUI thread, probably with BeginInvoke, so that if it runs sluggishly it will also start lagging behind with several seconds in a short time.
* RefreshPlot generally feels very slow for a live data scenario
* The GUI thread is locked for big chunks of the time, so even moving the parent window is very sluggish
I am on a powerful PC with pretty recent CPU and GPU, so that should not be the problem. Running Windows 8, but same is seen on Win7.
I have not yet dug into the source code of Oxyplot, but are there any tips on how to improve live data rendering?
Comments: I added a sample project at https://github.com/InitialForce/OxyPlot.LiveDataPerformanceTest There are some quirks, but it gives a showcase on how we currently do live data with OxyPlot. I recommend using Performance Profiling Tools for WPF: http://stackoverflow.com/questions/14469206/where-can-i-download-wpf-performance-suite-for-windows-8 Performance results: 8 channels @ 100 Hz: 40 fps 8 channels @ 300 Hz: 15 fps Known issues: * Collection modified exception with sample rate > 100 Hz * Nullref exception when dragging sample rate slider while running Both of these occur in OxyPlot code and may be candidates for bugfixing. I did not have these issues in the original code, so I may have done something slightly differently in this sample application. If you see any mistakes on how to best do live data, please let me know.
I have 8 line series with 1000 samples/sec each, but reducing the data frequency does not seem to help much, so this does not seem directly related to drawing performance.
There are a few issues:
* RefreshPlot(true) seems to queue on the GUI thread, probably with BeginInvoke, so that if it runs sluggishly it will also start lagging behind with several seconds in a short time.
* RefreshPlot generally feels very slow for a live data scenario
* The GUI thread is locked for big chunks of the time, so even moving the parent window is very sluggish
I am on a powerful PC with pretty recent CPU and GPU, so that should not be the problem. Running Windows 8, but same is seen on Win7.
I have not yet dug into the source code of Oxyplot, but are there any tips on how to improve live data rendering?
Comments: I added a sample project at https://github.com/InitialForce/OxyPlot.LiveDataPerformanceTest There are some quirks, but it gives a showcase on how we currently do live data with OxyPlot. I recommend using Performance Profiling Tools for WPF: http://stackoverflow.com/questions/14469206/where-can-i-download-wpf-performance-suite-for-windows-8 Performance results: 8 channels @ 100 Hz: 40 fps 8 channels @ 300 Hz: 15 fps Known issues: * Collection modified exception with sample rate > 100 Hz * Nullref exception when dragging sample rate slider while running Both of these occur in OxyPlot code and may be candidates for bugfixing. I did not have these issues in the original code, so I may have done something slightly differently in this sample application. If you see any mistakes on how to best do live data, please let me know.