我已经看到了一些类似的问题,我制作了一个适合我的系统,但我需要优化它,因为这个程序本身就占用了大量的 CPU 负载。
这正是问题所在。
我有一个需要实时绘制的传入信号/数据流。我只希望一次显示有限数量的点(比如 1024 个点),所以我将沿 y 轴的数据点与 x 轴上 0-1024 的索引进行对比。传入数据的值范围为 0-1023。
我目前所做的(这一切都在 C++ 中)是我将数据放入一个循环循环中,并且每次更新数据时(或每第二个/第三个数据点),我写出一个文件并使用管道,我用 gnuplot 绘制该文件中的数据。
虽然这几乎可以完美运行,但它会导致相当多的负载(根据输入数据速率,我看到我的 Core 2 Duo 的两个内核的使用率甚至达到了 70%)。我需要在这个简短的程序中运行一些处理器密集型代码,所以我觉得几乎有必要对其进行优化。
我希望可以做的是:我可以只绘制当前图和新数据之间的差异(或者绘制每个点而不重新绘制整个图,以便删除该 x 索引处的旧项目) .
我在图表上有固定数量的点,所以重新绘制不起作用。我希望删除该 x 位置的旧点。