Jason, I think that it's already implemented in a way that it's copies only once it's done. There's a worker thread that does that at a low priority. However, once it's done it notifies the main thread, and that causes a hick up. I saw that in QPixmapCache. I guess once loading is done, there's call all the way from the C++ to the declarative view that the source was updated and from what I've seen it's quite an expensive op.
On Wed, Feb 1, 2012 at 6:48 PM, Jason H <[email protected]> wrote: > It also matters greatly what image format you use. PNG takes a lot of CPU. > What I would do is not disable a core, but only copy to the main thread > when the image is done loading and needed. > Also look at QPixmapCache. > > Also, if memory serves, QPixmaps are implicitly shared and don't need to > be copied between QThreads, but QImage isn't and must me copied. > > > ------------------------------ > *From:* yuval tal <[email protected]> > *To:* [email protected] > *Sent:* Wednesday, February 1, 2012 10:18 AM > *Subject:* [Qt-qml] Improve performance of image loading in QML on dual > core embedded systems > > Hi, > I was testing Qt4.8/QML performance on a dual-core embedded system. I > created a grid with 200 items and showed 21 items in the grid. I noticed > that while I scroll, the performance wasn’t so good. After doing a lot of > digging and comparison I got to some conclusion which is a bit odd: during > scroll, core 0 is running at 100%. That’s fine. The low priority thread > that loads the images was running on core 1. This means that the fact that > it has a lower priority is meaningless as core 1 was mostly idle so the > scheduler was actually letting it run. Every time it finished decoding an > image, it copied it to the main thread, which caused a hick-up. I disabled > core 1 and scroll performance was MUCH better and images were decoded > only when I was not scrolling. > I think a good idea would be to set the affinity of these two threads to > the same CPU. That’s a temporary fix. I think that a better fix would be > that the image loader, would not immediatelly return the job upon complete, > but wait for a good time (when no animations are running for example) to > copy the images to the main thread. Anyone has other ideas? > Give it a try if you are facing the same issue. If you want to disable a > core on linux do the following: > echo 0 > /sys/devices/system/cpu/cpu1/online > -Yuval > > _______________________________________________ > Qt-qml mailing list > [email protected] > http://lists.qt.nokia.com/mailman/listinfo/qt-qml > > >
_______________________________________________ Qt-qml mailing list [email protected] http://lists.qt.nokia.com/mailman/listinfo/qt-qml
