Currently `PlotModel.Update(...)` and `PlotModel.Render(...)` are called in one bundle inside `PlotControl.UpdateModelAndVisuals()`. Thus every invalidation forces also a rendering, what is limiting the performance (see attached current_architecture.png).
By separating invalidation and rendering, the data updates are not limited by the rendering speed. So it will be possible to update data more than 60 times (assumed 60fps rendering). As the plot model would only notify the plot control that it has been invalidated and should be rendered but does not need to wait for it to complete.
Comments: The suggested changes will reduce the thread transitions significantly (see attached suggested_architecture.png).
By separating invalidation and rendering, the data updates are not limited by the rendering speed. So it will be possible to update data more than 60 times (assumed 60fps rendering). As the plot model would only notify the plot control that it has been invalidated and should be rendered but does not need to wait for it to complete.
Comments: The suggested changes will reduce the thread transitions significantly (see attached suggested_architecture.png).