CPU 在多个 QQuickWindows 上调用 update() SLOT 时负载急剧增加
CPU load strongly increasing when calling update() SLOT on several QQuickWindows
我发现我的应用程序在多个 QQuickWindows 上调用 update() SLOT 时及时消耗越来越多的 CPU 电量。
这是一个简单的测试程序:
import QtQuick 2.3
import QtQuick.Controls 1.2
import QtQuick.Window 2.2
ApplicationWindow {visible: true; width: 640; height: 480;
Window{ height: 100; width: 100; visible: true; objectName: "w1"; id:w1; }
Window{ height: 100; width: 100; visible: true; objectName: "w2"; id:w2; }
Window{ height: 100; width: 100; visible: true; objectName: "w3"; id:w3; }
Timer {
interval: 30
repeat: true
running: true
onTriggered: {
w1.update();
w2.update();
w3.update();
}
}
}
如果我用 Loader
完全重新加载 QQuickWindows,一切都会重置并且 CPU 负载从头开始增加。
此问题已使用以下两个系统进行测试:
Ubuntu 12.04 + Qt5.4.2 + intel_video + 开源视频驱动
Ubuntu14.04 + Qt5.3.2 + radeon_video + 开源视频驱动程序
我需要快速解决这个问题!!!我已经尝试定期调用 releaseResources()
方法和 [=15= 的 resetOpenGLState()
方法].
另外非常有趣的是,当我在我的 main.cpp
中应用 putenv("LIBGL_ALWAYS_SOFTWARE=1")
时,这个问题就消失了,我的 CONSTANT 很低 cpu用法。但在我的实际应用程序中,我需要硬件渲染,所以它不是我的选择。
任何人都可以测试这个问题或给我一个建议吗?
我已经在我的 Ubuntu 14.04 + Qt5.4 + amd proprietary drives
上测试了您的代码,CPU 负载没有任何增加(它保持不变)。每 30 毫秒重新加载一次图像,帧速率为 33.3 fps。我猜你使用的是开源驱动器,它在渲染方面不太好。尝试在我们的 amd 机器上使用 amd 专有驱动器。
我发现我的应用程序在多个 QQuickWindows 上调用 update() SLOT 时及时消耗越来越多的 CPU 电量。
这是一个简单的测试程序:
import QtQuick 2.3
import QtQuick.Controls 1.2
import QtQuick.Window 2.2
ApplicationWindow {visible: true; width: 640; height: 480;
Window{ height: 100; width: 100; visible: true; objectName: "w1"; id:w1; }
Window{ height: 100; width: 100; visible: true; objectName: "w2"; id:w2; }
Window{ height: 100; width: 100; visible: true; objectName: "w3"; id:w3; }
Timer {
interval: 30
repeat: true
running: true
onTriggered: {
w1.update();
w2.update();
w3.update();
}
}
}
如果我用 Loader
完全重新加载 QQuickWindows,一切都会重置并且 CPU 负载从头开始增加。
此问题已使用以下两个系统进行测试:
Ubuntu 12.04 + Qt5.4.2 + intel_video + 开源视频驱动
Ubuntu14.04 + Qt5.3.2 + radeon_video + 开源视频驱动程序
我需要快速解决这个问题!!!我已经尝试定期调用 releaseResources()
方法和 [=15= 的 resetOpenGLState()
方法].
另外非常有趣的是,当我在我的 main.cpp
中应用 putenv("LIBGL_ALWAYS_SOFTWARE=1")
时,这个问题就消失了,我的 CONSTANT 很低 cpu用法。但在我的实际应用程序中,我需要硬件渲染,所以它不是我的选择。
任何人都可以测试这个问题或给我一个建议吗?
我已经在我的 Ubuntu 14.04 + Qt5.4 + amd proprietary drives
上测试了您的代码,CPU 负载没有任何增加(它保持不变)。每 30 毫秒重新加载一次图像,帧速率为 33.3 fps。我猜你使用的是开源驱动器,它在渲染方面不太好。尝试在我们的 amd 机器上使用 amd 专有驱动器。