[Interest] Improve ListView scrolling performance (many pictures)

Andy asmaloney at gmail.com
Fri Aug 11 14:14:06 CEST 2017


Bernhard:

I don't use QML, but in my application I use a QAbstractItemModel-derived
class and a QTreeView-derived class to display image thumbnails in the
view. The way I make it speedy is to save the image as a thumbnail so the
view items don't need to resize the image data at all.

Maybe you could save a thumbnail of an appropriate size when you're adding
them to your model?

---
Andy Maloney  //  https://asmaloney.com
twitter ~ @asmaloney <https://twitter.com/asmaloney>


On Fri, Aug 11, 2017 at 3:33 AM, Bernhard B <schluchti at gmail.com> wrote:

> Hi Vlad,
>
> you mean the QQuickAsyncImageProvider? That one sounds really promising.
> Will definitely try that out. Many thanks for the suggestion!
>
> Bernhard
>
> Am Donnerstag, 10. August 2017 schrieb Vlad Stelmahovsky :
>
>> threaded image provider might help
>>
>> On Thu, Aug 10, 2017 at 12:36 PM, Bernhard B <schluchti at gmail.com> wrote:
>>
>>> Hi,
>>>
>>> yesterday, I also tried to replace the Base64ImageProvider approach with
>>> a subclassed QQuickPaintedItem which paints the image in it's paint method.
>>> I imagined that this approach might be faster es no bade64 decoding needs
>>> to be done. But unfortunately it looks like as it's performing even worse
>>> that way.
>>>
>>> Bernhard
>>>
>>> Am Mittwoch, 9. August 2017 schrieb Bernhard B :
>>>
>>>> Hi,
>>>>
>>>> I would need some help from you guys on how to improve the ListView's
>>>> performance. The problem is, that scrolling through my ListView sometimes
>>>> feels a little bit sluggish.
>>>>
>>>> If I only display some text in the ListView's delegate I can scroll
>>>> smoothly through my list. But as soon as there is a picture in the
>>>> ListView's delegate I notice that I can't scroll smoothly through my list
>>>> anymore. That's especially noticable if I try to scroll fast through my
>>>> list. Every time I hit a picture while scrolling through the list I can see
>>>> that there is a noticable delay until the picture is fully loaded. My
>>>> assumption is, that those pictures are the reason why he scrolling feels so
>>>> sluggish.
>>>>
>>>> My application currently works like this:
>>>>
>>>> * load 20 pictures via REST (pictures are base64 encoded)
>>>> * populate list model
>>>> * the Image component in the delegate uses a Base64ImageProvider (self
>>>> written) to access the model's base64 encoded content and displays the image
>>>> * if the user scrolls past a threshold another batch of base64 encoded
>>>> pictures is fetched from the server
>>>>
>>>> I also found this document: http://doc.qt.io/qt-
>>>> 5/qtquick-performance.html#rendering and tried to apply as much as
>>>> possible. In detail I applied the following changes:
>>>>
>>>> * removed complex bindings from delegate
>>>> * set sourceSize property for Image
>>>> * increased cacheBuffer a bit
>>>> * profiled with QML profiler and improved a few things
>>>>
>>>> But still, the ListView feels a bit sluggish. The strange thing is,
>>>> that it's most noticable on Android whereas on Windows and iOs it is better.
>>>>
>>>> Does anyone have an idea on how to improve that?
>>>>
>>>>
>>>> Any help is really appreciated.
>>>> Thanks a lot!
>>>>
>>>
>>> _______________________________________________
>>> Interest mailing list
>>> Interest at qt-project.org
>>> http://lists.qt-project.org/mailman/listinfo/interest
>>>
>>>
>>
>>
>> --
>> Best regards,
>> Vlad
>>
>
> _______________________________________________
> Interest mailing list
> Interest at qt-project.org
> http://lists.qt-project.org/mailman/listinfo/interest
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.qt-project.org/pipermail/interest/attachments/20170811/b58b504e/attachment.html>


More information about the Interest mailing list