diff options
author | Marc Mutz <marc.mutz@kdab.com> | 2020-05-02 23:03:39 +0200 |
---|---|---|
committer | Marc Mutz <marc.mutz@kdab.com> | 2020-05-05 07:24:42 +0200 |
commit | f5a32861e321a839e8293e3f5b28169b26128592 (patch) | |
tree | 7194993bc443e47185b51c3b3a201634ac55006c /src/corelib/io/qresource.cpp | |
parent | a6a412dbb6c82f6a4885e54fbef0cfe14fbcd4ab (diff) |
QResource: port a local QSet to QDuplicateTracker
Apart from a more fitting, minimal, API, QDuplicateTracker also
transparently uses C++17 pmr::monotonic_buffer_resource to avoid, or
at least reduce, memory allocations.
Change-Id: If059f2ac66967168fe269cd62aaee9cfeb10f17e
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
Diffstat (limited to 'src/corelib/io/qresource.cpp')
-rw-r--r-- | src/corelib/io/qresource.cpp | 12 |
1 files changed, 5 insertions, 7 deletions
diff --git a/src/corelib/io/qresource.cpp b/src/corelib/io/qresource.cpp index 9a2fd196a2..51c47d7fc6 100644 --- a/src/corelib/io/qresource.cpp +++ b/src/corelib/io/qresource.cpp @@ -55,6 +55,7 @@ #include <qplatformdefs.h> #include <qendian.h> #include "private/qabstractfileengine_p.h" +#include "private/qduplicatetracker_p.h" #include "private/qnumeric_p.h" #include "private/qsimd_p.h" #include "private/qtools_p.h" @@ -417,25 +418,22 @@ QResourcePrivate::ensureChildren() const QString path = absoluteFilePath, k; if(path.startsWith(QLatin1Char(':'))) path = path.mid(1); - QSet<QString> kids; + QDuplicateTracker<QString> kids; + kids.reserve(related.size()); QString cleaned = cleanPath(path); for(int i = 0; i < related.size(); ++i) { QResourceRoot *res = related.at(i); if(res->mappingRootSubdir(path, &k) && !k.isEmpty()) { - if(!kids.contains(k)) { + if (!kids.hasSeen(k)) children += k; - kids.insert(k); - } } else { const int node = res->findNode(cleaned); if(node != -1) { QStringList related_children = res->children(node); for(int kid = 0; kid < related_children.size(); ++kid) { k = related_children.at(kid); - if(!kids.contains(k)) { + if (!kids.hasSeen(k)) children += k; - kids.insert(k); - } } } } |