<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.kde.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.6"
          urlbase="https://bugs.kde.org/"
          
          maintainer="sysadmin@kde.org"
>

    <bug>
          <bug_id>518839</bug_id>
          
          <creation_ts>2026-04-11 19:29:01 +0000</creation_ts>
          <short_desc>Improve performance of album&apos;s cache [patch]</short_desc>
          <delta_ts>2026-04-12 09:07:02 +0000</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>2</classification_id>
          <classification>Applications</classification>
          <product>digikam</product>
          <component>Albums-Engine</component>
          <version>9.1.0</version>
          <rep_platform>Compiled Sources</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>NOR</priority>
          <bug_severity>wishlist</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Eugene Vert">eugene.a.vert</reporter>
          <assigned_to name="Digikam Developers">digikam-bugs-null</assigned_to>
          <cc>caulier.gilles</cc>
    
    <cc>metzpinguin</cc>
          
          <cf_commitlink>https://invent.kde.org/graphics/digikam/-/commit/ec79a49979f46b749cb1ae713f6ba9872ae7d19e</cf_commitlink>
          <cf_versionfixedin>9.1.0</cf_versionfixedin>
          <cf_sentryurl></cf_sentryurl>
          <votes>0</votes>

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>2509540</commentid>
    <comment_count>0</comment_count>
      <attachid>191455</attachid>
    <who name="Eugene Vert">eugene.a.vert</who>
    <bug_when>2026-04-11 19:29:01 +0000</bug_when>
    <thetext>Created attachment 191455
Proposed patch

SUMMARY
`Album::rowFromAlbum` is using `m_childCache.indexOf` and it causes a noticeable delay (~1.5s for Captions-&gt;Tags to update) when navigating through an album in Thumbnails view with &quot;Show Assigned Tags&quot;/&quot;Tags already assigned&quot; enabled. It&apos;s the most noticeable issue, but after the patch most album operations also became a bit snappier.

STEPS TO REPRODUCE
1. Open Captions-&gt;Tags sidebar in Thumbnails view
2. Enable &quot;Tags already assigned&quot; in Captions-&gt;Tags sidebar
3. Select image
4. Select other image

OBSERVED RESULT
~1.5s delay until Captions-&gt;Tags sidebar is updated.

ADDITIONAL INFORMATION
In `Album` class, `m_childCache` is a `QList&lt;Album*&gt;` container. Instead of sequential search (`indexOf`), maybe it&apos;s better to use `QHash` for lookup speed while maintaining `QList` ordering.

Proposed patch attached</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2509562</commentid>
    <comment_count>1</comment_count>
    <who name="">caulier.gilles</who>
    <bug_when>2026-04-12 01:04:48 +0000</bug_when>
    <thetext>how many tags assigned in your collections ?
how many items by album ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2509620</commentid>
    <comment_count>2</comment_count>
    <who name="Maik Qualmann">metzpinguin</who>
    <bug_when>2026-04-12 05:59:26 +0000</bug_when>
    <thetext>Maintaining the index of the children&apos;s albums has always been a performance issue. Previously, we would manually go through all the parents&apos; albums and count them; QList provided a huge boost in this regard. We probably lose some speed when removing albums, but this happens far less frequently. I would still like to tweak it slightly.

Maik</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2509624</commentid>
    <comment_count>3</comment_count>
      <attachid>191465</attachid>
    <who name="Maik Qualmann">metzpinguin</who>
    <bug_when>2026-04-12 07:46:38 +0000</bug_when>
    <thetext>Created attachment 191465
childCacheIndex.patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2509625</commentid>
    <comment_count>4</comment_count>
    <who name="Eugene Vert">eugene.a.vert</who>
    <bug_when>2026-04-12 08:12:20 +0000</bug_when>
    <thetext>Maik,
Thank you for the patch! After applying it, navigation is smooth and the lag is gone.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2509636</commentid>
    <comment_count>5</comment_count>
    <who name="Maik Qualmann">metzpinguin</who>
    <bug_when>2026-04-12 09:07:02 +0000</bug_when>
    <thetext>Git commit ec79a49979f46b749cb1ae713f6ba9872ae7d19e by Maik Qualmann.
Committed on 12/04/2026 at 09:05.
Pushed by mqualmann into branch &apos;master&apos;.

get child index faster based on the idea of Eugene Vert
FIXED-IN: 9.1.0

M  +1    -1    NEWS
M  +25   -20   core/libs/album/engine/album.cpp
M  +1    -1    core/libs/album/engine/album.h

https://invent.kde.org/graphics/digikam/-/commit/ec79a49979f46b749cb1ae713f6ba9872ae7d19e</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>191455</attachid>
            <date>2026-04-11 19:29:01 +0000</date>
            <delta_ts>2026-04-12 07:46:38 +0000</delta_ts>
            <desc>Proposed patch</desc>
            <filename>Optimize-album-s-cache-lookup-with-index-map.patch</filename>
            <type>text/plain</type>
            <size>2479</size>
            <attacher name="Eugene Vert">eugene.a.vert</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL2NvcmUvbGlicy9hbGJ1bS9lbmdpbmUvYWxidW0uY3BwIGIvY29yZS9saWJz
L2FsYnVtL2VuZ2luZS9hbGJ1bS5jcHAKaW5kZXggMmY1MmNlMzQ5Li45OTE1ZjA1OTEgMTAwNjQ0
Ci0tLSBhL2NvcmUvbGlicy9hbGJ1bS9lbmdpbmUvYWxidW0uY3BwCisrKyBiL2NvcmUvbGlicy9h
bGJ1bS9lbmdpbmUvYWxidW0uY3BwCkBAIC05NSw3ICs5NSw3IEBAIEFsYnVtKiBBbGJ1bTo6bmV4
dCgpIGNvbnN0CiAKICAgICBRUmVhZExvY2tlciBwYXJlbnRMb2NrZXIoJm1fcGFyZW50LT5tX2Nh
Y2hlTG9jayk7CiAKLSAgICBpbnQgcm93ID0gbV9wYXJlbnQtPm1fY2hpbGRDYWNoZS5pbmRleE9m
KGNvbnN0X2Nhc3Q8QWxidW0qPih0aGlzKSk7CisgICAgaW50IHJvdyA9IG1fcGFyZW50LT5tX2No
aWxkQ2FjaGVJbmRleC52YWx1ZShjb25zdF9jYXN0PEFsYnVtKj4odGhpcykpOwogCiAgICAgaWYg
KChyb3cgPCAwKSB8fCAoKHJvdyArIDEpID49IG1fcGFyZW50LT5tX2NoaWxkQ2FjaGUuc2l6ZSgp
KSkKICAgICB7CkBAIC0xMTQsNyArMTE0LDcgQEAgQWxidW0qIEFsYnVtOjpwcmV2KCkgY29uc3QK
IAogICAgIFFSZWFkTG9ja2VyIHBhcmVudExvY2tlcigmbV9wYXJlbnQtPm1fY2FjaGVMb2NrKTsK
IAotICAgIGludCByb3cgPSBtX3BhcmVudC0+bV9jaGlsZENhY2hlLmluZGV4T2YoY29uc3RfY2Fz
dDxBbGJ1bSo+KHRoaXMpKTsKKyAgICBpbnQgcm93ID0gbV9wYXJlbnQtPm1fY2hpbGRDYWNoZUlu
ZGV4LnZhbHVlKGNvbnN0X2Nhc3Q8QWxidW0qPih0aGlzKSk7CiAKICAgICBpZiAocm93IDwgMSkK
ICAgICB7CkBAIC0xODYsNiArMTg2LDcgQEAgdm9pZCBBbGJ1bTo6aW5zZXJ0Q2hpbGQoQWxidW0q
IGNvbnN0IGNoaWxkKQogICAgIFFXcml0ZUxvY2tlciBsb2NrZXIoJm1fY2FjaGVMb2NrKTsKIAog
ICAgIG1fY2hpbGRDYWNoZS5hcHBlbmQoY2hpbGQpOworICAgIG1fY2hpbGRDYWNoZUluZGV4Lmlu
c2VydChjaGlsZCwgbV9jaGlsZENhY2hlLnNpemUoKSAtIDEpOwogfQogCiB2b2lkIEFsYnVtOjpy
ZW1vdmVDaGlsZChBbGJ1bSogY29uc3QgY2hpbGQpCkBAIC0xOTcsNyArMTk4LDE4IEBAIHZvaWQg
QWxidW06OnJlbW92ZUNoaWxkKEFsYnVtKiBjb25zdCBjaGlsZCkKIAogICAgIFFXcml0ZUxvY2tl
ciBsb2NrZXIoJm1fY2FjaGVMb2NrKTsKIAotICAgIG1fY2hpbGRDYWNoZS5yZW1vdmVPbmUoY2hp
bGQpOworICAgIHFzaXpldHlwZSBpZHggPSBtX2NoaWxkQ2FjaGUuaW5kZXhPZihjaGlsZCk7Cisg
ICAgaWYgKGlkeCA9PSAtMSkgeworICAgICAgICByZXR1cm47CisgICAgfQorICAgIG1fY2hpbGRD
YWNoZS5yZW1vdmVBdChpZHgpOworICAgIG1fY2hpbGRDYWNoZUluZGV4LnJlbW92ZShjaGlsZCk7
CisgICAgLy8gQWRqdXN0IG1fY2hpbGRDYWNoZUluZGV4IHRvIGFjY291bnQgZm9yIGRlbGV0ZWQg
ZW50cnkKKyAgICBmb3IgKGF1dG8gaSA9IG1fY2hpbGRDYWNoZUluZGV4LmJlZ2luKCk7IGkgIT0g
bV9jaGlsZENhY2hlSW5kZXguZW5kKCk7ICsraSkgeworICAgICAgICBpZiAoaS52YWx1ZSgpID4g
aWR4KSB7CisgICAgICAgICAgICBpLnZhbHVlKCkgLT0gMTsKKyAgICAgICAgfQorICAgIH0KIH0K
IAogdm9pZCBBbGJ1bTo6Y2xlYXIoKQpAQCAtMjExLDYgKzIyMyw3IEBAIHZvaWQgQWxidW06OmNs
ZWFyKCkKIAogICAgICAgICBkZWxldGUgY2hpbGQ7CiAgICAgfQorICAgIG1fY2hpbGRDYWNoZUlu
ZGV4LmNsZWFyKCk7CiB9CiAKIGludCBBbGJ1bTo6Z2xvYmFsSUQoKSBjb25zdApAQCAtMjc4LDcg
KzI5MSw3IEBAIGludCBBbGJ1bTo6cm93RnJvbUFsYnVtKCkgY29uc3QKIAogICAgIFFSZWFkTG9j
a2VyIHBhcmVudExvY2tlcigmbV9wYXJlbnQtPm1fY2FjaGVMb2NrKTsKIAotICAgIGludCByb3cg
PSBtX3BhcmVudC0+bV9jaGlsZENhY2hlLmluZGV4T2YoY29uc3RfY2FzdDxBbGJ1bSo+KHRoaXMp
KTsKKyAgICBpbnQgcm93ID0gbV9wYXJlbnQtPm1fY2hpbGRDYWNoZUluZGV4LnZhbHVlKGNvbnN0
X2Nhc3Q8QWxidW0qPih0aGlzKSk7CiAKICAgICByZXR1cm4gKChyb3cgIT0gLTEpID8gcm93IDog
MCk7CiB9CmRpZmYgLS1naXQgYS9jb3JlL2xpYnMvYWxidW0vZW5naW5lL2FsYnVtLmggYi9jb3Jl
L2xpYnMvYWxidW0vZW5naW5lL2FsYnVtLmgKaW5kZXggYjg5ZDA4ZDc2Li5iNDhkOTc4YTMgMTAw
NjQ0Ci0tLSBhL2NvcmUvbGlicy9hbGJ1bS9lbmdpbmUvYWxidW0uaAorKysgYi9jb3JlL2xpYnMv
YWxidW0vZW5naW5lL2FsYnVtLmgKQEAgLTM0MCw2ICszNDAsNyBAQCBwcml2YXRlOgogICAgIFFN
YXA8Y29uc3Qgdm9pZCosIHZvaWQqPiBtX2V4dHJhTWFwOwogCiAgICAgUUxpc3Q8QWxidW0qPiAg
ICAgICAgICAgIG1fY2hpbGRDYWNoZTsKKyAgICBRSGFzaDxBbGJ1bSosIHFzaXpldHlwZT4gbV9j
aGlsZENhY2hlSW5kZXg7CiAKICAgICBUeXBlICAgICAgICAgICAgICAgICAgICAgbV90eXBlICAg
ICAgICAgICAgICAgICA9IFBIWVNJQ0FMOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>191465</attachid>
            <date>2026-04-12 07:46:38 +0000</date>
            <delta_ts>2026-04-12 07:46:38 +0000</delta_ts>
            <desc>childCacheIndex.patch</desc>
            <filename>childCacheIndex.patch</filename>
            <type>text/plain</type>
            <size>2846</size>
            <attacher name="Maik Qualmann">metzpinguin</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL2NvcmUvbGlicy9hbGJ1bS9lbmdpbmUvYWxidW0uY3BwIGIvY29yZS9saWJz
L2FsYnVtL2VuZ2luZS9hbGJ1bS5jcHAKaW5kZXggMmY1MmNlMzQ5Yy4uZTA0Y2EyNGE0YyAxMDA2
NDQKLS0tIGEvY29yZS9saWJzL2FsYnVtL2VuZ2luZS9hbGJ1bS5jcHAKKysrIGIvY29yZS9saWJz
L2FsYnVtL2VuZ2luZS9hbGJ1bS5jcHAKQEAgLTk1LDE0ICs5NSwxMiBAQCBBbGJ1bSogQWxidW06
Om5leHQoKSBjb25zdAogCiAgICAgUVJlYWRMb2NrZXIgcGFyZW50TG9ja2VyKCZtX3BhcmVudC0+
bV9jYWNoZUxvY2spOwogCi0gICAgaW50IHJvdyA9IG1fcGFyZW50LT5tX2NoaWxkQ2FjaGUuaW5k
ZXhPZihjb25zdF9jYXN0PEFsYnVtKj4odGhpcykpOwotCi0gICAgaWYgKChyb3cgPCAwKSB8fCAo
KHJvdyArIDEpID49IG1fcGFyZW50LT5tX2NoaWxkQ2FjaGUuc2l6ZSgpKSkKKyAgICBpZiAoKG1f
cm93ICsgMSkgPj0gbV9wYXJlbnQtPm1fY2hpbGRDYWNoZS5zaXplKCkpCiAgICAgewogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKLSAgICByZXR1cm4gbV9wYXJlbnQtPm1fY2hpbGRD
YWNoZS5hdChyb3cgKyAxKTsKKyAgICByZXR1cm4gbV9wYXJlbnQtPm1fY2hpbGRDYWNoZS5hdCht
X3JvdyArIDEpOwogfQogCiBBbGJ1bSogQWxidW06OnByZXYoKSBjb25zdApAQCAtMTE0LDE0ICsx
MTIsMTIgQEAgQWxidW0qIEFsYnVtOjpwcmV2KCkgY29uc3QKIAogICAgIFFSZWFkTG9ja2VyIHBh
cmVudExvY2tlcigmbV9wYXJlbnQtPm1fY2FjaGVMb2NrKTsKIAotICAgIGludCByb3cgPSBtX3Bh
cmVudC0+bV9jaGlsZENhY2hlLmluZGV4T2YoY29uc3RfY2FzdDxBbGJ1bSo+KHRoaXMpKTsKLQot
ICAgIGlmIChyb3cgPCAxKQorICAgIGlmIChtX3JvdyA8IDEpCiAgICAgewogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKICAgICB9CiAKLSAgICByZXR1cm4gbV9wYXJlbnQtPm1fY2hpbGRDYWNoZS5h
dChyb3cgLSAxKTsKKyAgICByZXR1cm4gbV9wYXJlbnQtPm1fY2hpbGRDYWNoZS5hdChtX3JvdyAt
IDEpOwogfQogCiBBbGJ1bSogQWxidW06OmNoaWxkQXRSb3coaW50IHJvdykgY29uc3QKQEAgLTE4
Niw2ICsxODIsNyBAQCB2b2lkIEFsYnVtOjppbnNlcnRDaGlsZChBbGJ1bSogY29uc3QgY2hpbGQp
CiAgICAgUVdyaXRlTG9ja2VyIGxvY2tlcigmbV9jYWNoZUxvY2spOwogCiAgICAgbV9jaGlsZENh
Y2hlLmFwcGVuZChjaGlsZCk7CisgICAgY2hpbGQtPm1fcm93ID0gbV9jaGlsZENhY2hlLnNpemUo
KSAtIDE7CiB9CiAKIHZvaWQgQWxidW06OnJlbW92ZUNoaWxkKEFsYnVtKiBjb25zdCBjaGlsZCkK
QEAgLTE5Nyw3ICsxOTQsMjMgQEAgdm9pZCBBbGJ1bTo6cmVtb3ZlQ2hpbGQoQWxidW0qIGNvbnN0
IGNoaWxkKQogCiAgICAgUVdyaXRlTG9ja2VyIGxvY2tlcigmbV9jYWNoZUxvY2spOwogCi0gICAg
bV9jaGlsZENhY2hlLnJlbW92ZU9uZShjaGlsZCk7CisgICAgZm9yIChhdXRvIGl0ID0gbV9jaGls
ZENhY2hlLmJlZ2luKCk7IGl0ICE9IG1fY2hpbGRDYWNoZS5lbmQoKTsgKytpdCkKKyAgICB7Cisg
ICAgICAgIGlmICgoKml0KSA9PSBjaGlsZCkKKyAgICAgICAgeworICAgICAgICAgICAgaXQgPSBt
X2NoaWxkQ2FjaGUuZXJhc2UoaXQpOworCisgICAgICAgICAgICBmb3IgKCA7IGl0ICE9IG1fY2hp
bGRDYWNoZS5lbmQoKTsgKytpdCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBpZiAo
Kml0KQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgKCppdCktPm1fcm93
IC09IDE7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgfQorICAgIH0KIH0KIAogdm9pZCBBbGJ1bTo6Y2xlYXIoKQpAQCAtMjY2
LDIxICsyNzksMTIgQEAgaW50IEFsYnVtOjpjaGlsZENvdW50KCkgY29uc3QKIHsKICAgICBRUmVh
ZExvY2tlciBsb2NrZXIoJm1fY2FjaGVMb2NrKTsKIAotICAgIHJldHVybiBtX2NoaWxkQ2FjaGUu
Y291bnQoKTsKKyAgICByZXR1cm4gbV9jaGlsZENhY2hlLnNpemUoKTsKIH0KIAogaW50IEFsYnVt
Ojpyb3dGcm9tQWxidW0oKSBjb25zdAogewotICAgIGlmICghbV9wYXJlbnQpCi0gICAgewotICAg
ICAgICByZXR1cm4gMDsKLSAgICB9Ci0KLSAgICBRUmVhZExvY2tlciBwYXJlbnRMb2NrZXIoJm1f
cGFyZW50LT5tX2NhY2hlTG9jayk7Ci0KLSAgICBpbnQgcm93ID0gbV9wYXJlbnQtPm1fY2hpbGRD
YWNoZS5pbmRleE9mKGNvbnN0X2Nhc3Q8QWxidW0qPih0aGlzKSk7Ci0KLSAgICByZXR1cm4gKChy
b3cgIT0gLTEpID8gcm93IDogMCk7CisgICAgcmV0dXJuIG1fcm93OwogfQogCiB2b2lkIEFsYnVt
OjpzZXRUaXRsZShjb25zdCBRU3RyaW5nJiB0aXRsZSkKZGlmZiAtLWdpdCBhL2NvcmUvbGlicy9h
bGJ1bS9lbmdpbmUvYWxidW0uaCBiL2NvcmUvbGlicy9hbGJ1bS9lbmdpbmUvYWxidW0uaAppbmRl
eCBiODlkMDhkNzZkLi45MjA4ZDU3YjBlIDEwMDY0NAotLS0gYS9jb3JlL2xpYnMvYWxidW0vZW5n
aW5lL2FsYnVtLmgKKysrIGIvY29yZS9saWJzL2FsYnVtL2VuZ2luZS9hbGJ1bS5oCkBAIC0zMzMs
NiArMzMzLDcgQEAgcHJpdmF0ZToKICAgICBib29sICAgICAgICAgICAgICAgICAgICAgbV91c2Vk
QnlMYWJlbHNUcmVlICAgICA9IGZhbHNlOwogCiAgICAgaW50ICAgICAgICAgICAgICAgICAgICAg
IG1faWQgICAgICAgICAgICAgICAgICAgPSAtMTsKKyAgICBpbnQgICAgICAgICAgICAgICAgICAg
ICAgbV9yb3cgICAgICAgICAgICAgICAgICA9IDA7CiAKICAgICBRU3RyaW5nICAgICAgICAgICAg
ICAgICAgbV9uYW1lOwogICAgIFFTdHJpbmcgICAgICAgICAgICAgICAgICBtX3RpdGxlOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>