[Interest] Application at Idle takes 10% of CPU
Michael Jackson
imikejackson at gmail.com
Sat Jun 27 16:58:01 CEST 2015
Our application seems to take more cpu than I think it should while just sitting "Idle". My machine is a MacBook Pro 2.6GHz Core i7 with 16GB Ram. Running OS X 10.8.5. Using the Activity Monitor our application takes about 10-12% of my CPU time. Using the "Instruments" application to get the heaviest functions I see that QImage::copy is taking up a bunch of time:
Running Time Self Symbol Name
2218.0ms 57.2% 2218.0 QImage::copy(QRect const&) const
2218.0ms 57.2% 0.0 QImage::detach()
2218.0ms 57.2% 0.0 QPainter::begin(QPaintDevice*)
2218.0ms 57.2% 0.0 QWidgetPrivate::drawWidget(QPaintDevice*, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*)
2218.0ms 57.2% 0.0 QWidgetBackingStore::doSync()
2218.0ms 57.2% 0.0 QWidgetBackingStore::sync()
2218.0ms 57.2% 0.0 QWidgetPrivate::syncBackingStore()
2218.0ms 57.2% 0.0 QWidget::event(QEvent*)
2218.0ms 57.2% 0.0 QMainWindow::event(QEvent*)
2218.0ms 57.2% 0.0 QApplicationPrivate::notify_helper(QObject*, QEvent*)
2218.0ms 57.2% 0.0 QApplication::notify(QObject*, QEvent*)
2218.0ms 57.2% 0.0 QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*)
2218.0ms 57.2% 0.0 QCocoaEventDispatcherPrivate::processPostedEvents()
2218.0ms 57.2% 0.0 QCocoaEventDispatcherPrivate::postedEventsSourceCallback(void*)
2218.0ms 57.2% 0.0 QCocoaEventDispatcher::processEvents(QFlags<QEventLoop::ProcessEventsFlag>)
2218.0ms 57.2% 0.0 QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>)
2218.0ms 57.2% 0.0 QCoreApplication::exec()
2218.0ms 57.2% 0.0 main
0.0ms 0.0% 0.0 Main Thread 0x2f66d0
I figured it was one of our custom paint methods. I went through our project and systematically commented out all of our custom painting codes and there was no change. We do use a lot of CSS to style our widgets. Would that account for the high CPU usage? This is with Qt 5.4.1 downloaded from Qt.io.
QTimers maybe? We do some animations using QTimer, though that is supposed to be "on-demand", i.e. it is not a continuous animation.
I replicated the issue on OS X 10.10 with Qt 5.4.2 on that system. As a sanity check, QtCreator uses 0% while Idle. So I must be something that we are doing wrong in our app. Our application on Windows does not seem to have this issue either.
Thanks for any help or insights.
Mike Jackson
BlueQuartz Software
More information about the Interest
mailing list