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: Where does the issue with samples not rendering show up: - only XAML defined plot - only model defined - both What is the exact problem: - missing model.Update() call - missing model.Render() call - Update() and Render() --> architecture issue :-( If it is the Update() call, this version might work: ``` C# public void InvalidatePlot(bool updateData = true) { this.UpdateModel(updateData); if (this.IsRendering && Interlocked.CompareExchange(ref this.isPlotInvalidated, 1, 0) == 0) { this.BeginInvoke(this.InvalidateArrange); } } ```
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: Where does the issue with samples not rendering show up: - only XAML defined plot - only model defined - both What is the exact problem: - missing model.Update() call - missing model.Render() call - Update() and Render() --> architecture issue :-( If it is the Update() call, this version might work: ``` C# public void InvalidatePlot(bool updateData = true) { this.UpdateModel(updateData); if (this.IsRendering && Interlocked.CompareExchange(ref this.isPlotInvalidated, 1, 0) == 0) { this.BeginInvoke(this.InvalidateArrange); } } ```