ASE Home Page Products Download Purchase Support About ASE
ChartDirector General
Forum HomeForum Home   SearchSearch

Message ListMessage List     Post MessagePost Message

  Real-time chart: performance
Posted by Philip on Sep-16-2020 04:31
I want to write a desktop application so I will write the code in C++ or C#.

The real-time XY chart should support at least 100 million data points.

After reading your "Real-Time Charts and Multithreading" feature at https://www.advsofteng.com/tutorials/real_time_chart_multithread/real_time_chart_multithread.html , does C++ or C# code give better performance for reading from file, writing to file and scrolling 100 million data points?

Philip

  Re: Real-time chart: performance
Posted by Peter Kwan on Sep-17-2020 01:02
Hi Philip,

C++ is faster, while C# is easier to write due to automatic memory management.

The current version of ChartDirector can definitely handle 100M data points, but the number of visible data points is at the order of 1 million. That means you would need to scroll back and forth to see the whole data. The process is CPU related, which means it can be faster with more visible data points with a faster CPU.

The next version of ChartDirector is planned to be available by early next year (or even at the end of this year). Currently, we have tested it to 3 x 100M data points (3 lines earch 100M points), all updated in realtime. It allows complete zoom in/out (that is, you can zoom out to display all 300M data points in one chart) and it can zoom and scroll fast even with that many data points. The process is memory bound. Our current testing is that it needs around 20 bytes per data value (counting both x and y values). We think with sufficient memory it may support more data points, but we are yet to test that.

ChartDirector only plots the data points in memory. Your code will need to read the data points from disk or save them to disk. I believe for large amount of data, the process will be I/O bound (it depends on the speed of your hard disk), and either language may have similar performance.

Regards
Peter Kwan

  Re: Real-time chart: performance
Posted by Philip on Sep-17-2020 02:14
Hello Peter,

For the DAQ (Data AcQuisition) industry, 8 channels is very popular. Please google with phrases "DAQ" and "8 channel". This means 8 lines in your real-time XY chart. Is it possible to support 8 lines each 100M points in the next release? Maybe it could be a configuration option with higher RAM requirements?

Regards,
Philip

  Re: Real-time chart: performance
Posted by Peter Kwan on Sep-17-2020 23:21
Hi Philip,

Yes, 8 x 100M should have no problem. We just have not tested it as this stage, but I have no reason to believe it would have issue.

By 8 x 100M, we mean we can plot all 8 x 100M points in "real time" (within 1 second), and update the lines many times per second.

We have some customers who have even larger data series, but they just need to display around 1M points at a time. In this case, only the visible part of the data need to be in memory, and the rest can stay on the hard disk and be loaded on demand (load the data only when the user scrolls to that part of the data). For this kind of usage, only a small amount of RAM is needed.

Regards
Peter Kwan