Qt QGraphicsView 应用程序始终使用 15% CPU。

Qt QGraphicsView application is always using 15% CPU.

我有一个围绕 QGraphicsView/Scene 构建的 Qt 应用程序。图形性能很好,动画非常流畅,一个简单的高分辨率计时器表示帧的绘制速度高达 400 fps。但是,根据任务管理器,应用程序始终使用 15% cpu。我在 Visual Studio 2012 年对它进行了 运行 性能分析,结果显示大多数样本都是在 QApplication::notify 函数中获取的。

我已将视口设置为使用 QGLWidget 进行渲染,希望将绘图功能卸载到 GPU 会有所帮助,但这对 CPU 使用没有任何影响。

这正常吗?我可以做些什么来减少 CPU 使用量吗?

好吧,你有它 - 400 FPS 帧速率。这会以 100% 的速度加载您的一个核心。人们通常会限制帧率是有原因的。高帧率给驱动图形的 Qt 事件系统带来了压力。

将帧速率限制为 60 FPS 即可解决问题。

I'm not updating the view unless an event occurs that updates an individual graphicswidget

不要为每个场景元素更改更新场景。这可能是开销的原因。您可以更改多个场景项目,但以固定速率渲染场景。

另外,我注意到你说 graphicswidget - 我假设是 QGraphicsWidget - 这也可能有问题。 QObject 派生的 classes 有点重,Qt 事件系统也有开销,这就是常规 QGraphicsItem 不是 QObject 派生的原因。如果您过多地使用图形小部件,这可能是开销的来源,所以看看您是否可以使用更轻的 QGraphicsItem class 和一些更轻的机制来驱动您的场景。