You should test if QPixmapCache is actually used. I had a project about a year ago on Symbian where the cache wasn't working. We wrote our own cache and solved the problem.
Bo. Den 01-02-2012 18:28, yuval tal skrev: > 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 <scorp...@yahoo.com > <mailto:scorp...@yahoo.com>> 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 <yuv...@boxee.tv <mailto:yuv...@boxee.tv>> > *To:* qt-qml@qt.nokia.com <mailto:qt-qml@qt.nokia.com> > *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 > Qt-qml@qt.nokia.com <mailto:Qt-qml@qt.nokia.com> > http://lists.qt.nokia.com/mailman/listinfo/qt-qml > > > > > > _______________________________________________ > Qt-qml mailing list > Qt-qml@qt.nokia.com > http://lists.qt.nokia.com/mailman/listinfo/qt-qml Bo Thorsen, Fionia Software. -- Expert Qt and C++ developer for hire Contact me if you need expert Qt help http://www.fioniasoftware.dk _______________________________________________ Qt-qml mailing list Qt-qml@qt.nokia.com http://lists.qt.nokia.com/mailman/listinfo/qt-qml