如何在小于10毫秒的时间内绘制并显示一百万个圆(半径5,用相同的颜色填充)?我已经尝试了所有可以在社区中找到的方法,但是通过在QWidget :: paintEvent()中使用QPainter :: drawEllipse(),可以达到大约2秒的最佳性能。
答案 0 :(得分:4)
你不能。
要了解原因,让我们做一些数学运算。您有10毫秒,想绘制100万个圆圈。那是每圈10 ns或100 MHz的绘制频率。 在当前处理器(约1 GHz)上,这意味着您必须在少于10个时钟周期(约10条指令)的时间内绘制一个圆圈。最好的情况是:某些指令要花费1个以上的时钟周期来处理,如果缓存丢失并且CPU必须从RAM中获取内存,则可能会丢失周期,操作系统可以暂停程序以让另一个进程执行(或线程运行),...
因此,用Qt和QPainter无法实现这种性能。如果使用硬件加速(OpenGL,DirectX或QtQuick),则可能是可行的。如果您不必以编程方式重新绘制所有内容,则只需在发生更改时更新“场景”即可。