我正在使用Qcustomplot在Qt中绘制实时USB接收的数据。 为了获得更好的速度,我想在数据接收开始之前分配内存。 这是我代码的一部分:
ui->plot_platform->graph(0)->data().data()->clear();
QVector<QCPGraphData> add_data(x);
ui->plot_platform->graph(0)->addData(add_data);
我在数据接收开始时执行此操作。 如何确定 X 的大小? 这意味着我如何找到可以从 Windows 获得的最大内存大小? 您的解决方案是否安全不会崩溃?
即使是 USB 的吞吐量也有限,因此您可以估计最大数量积分(按时间单位(:= x 您要以QVector<QCPGraphData> add_data(x)
保留的积分。
另一方面,当您为堆栈上的QVector<QCPGraphData>
分配内存时,如果保留太多矢量单元格,则可能会出现堆栈溢出。
顺便说一句:您对速度的需求可能会使您在错误的地方进行优化,因为分配一些额外的内存并不像用ui->plot_platform->graph(0)->addData(add_data);
更新绘图那样耗时。值得与QWT(s. https://stackoverflow.com/a/24689918/4599792(进行比较吗?