0

IsValidPoint on realtime LineSerie

Julio García González 2 years ago • updated by Pawan Kumar Tiwari 2 months ago 1

Hello guys! I've been using oxyplot for a month now and I'm pretty happy with what it delivers. I'm getting data from an oscilloscope and, after a fast processing, I'm plotting it in real time to a graph.


However, if I compare my application CPU usage to the one provided by the oscilloscope manufacturer, I'm loading a lot more the CPU. Maybe they're using some gpu-based plotter, but I think I can reduce my CPU usage with some modifications.

I'm capturing 10.000 samples per second and adding it to a LineSeries. I'm not plotting all that data, I'm decimating it to a constant number of points, let's say 80 points for a 20 secs measure, so I have 4 points/sec while totally zoomed out and a bit more detail if I zoom in to a specific range.


With the aid of ReSharper, I've noticed that the application is calling a lot of times (I've 6 different plots) the IsValidPoint method (something like 400.000.000 times), which is taking a lot of time.

I think the problem is that, when I add new points to the series, it checks for every point if it is a valid point, instead of the added values only.


Also, it spends a lot of time in the MeasureText/DrawText method.


My question is: is there a way to override those methods and to adapt it to my needs? I'm adding 10.000 new values each second, but the first ones remain the same, so there's no need for re-validate them. Also, the text shown doesn't change.

Thank you in advance for any advice you can give me. Have a good day!



Hello Julio Garcia

I have also face that issues, I am plotting Scatter Series from  60 FPS and every old frame i have cleaned and add new frame every 16  millisecond 

I have check that  application CPU usage is 32-36 from if render a graph and one Table updated if i wants to write data in CSV File then its CPU usage 45--56  

I have rendering a graph and Table  using Dispatcher thread 

I wants to Fix it CPU uses bellow 30 but till now i am not able to fix 

Can you suggest me how to resolved