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

Reply via email to