diff options
author | Thomas Hartmann <thomas.hartmann@qt.io> | 2022-11-23 09:32:45 +0100 |
---|---|---|
committer | Thomas Hartmann <thomas.hartmann@qt.io> | 2022-11-23 16:28:26 +0000 |
commit | d0a07dcacb70eaa58b36cd9fc3b37f8c8ce8106c (patch) | |
tree | b0c4380483b5f153c811bb72b327289d546c5179 /src/libs/qmljs | |
parent | 910a8864dc43f8dede7617855282f19de62ee939 (diff) | |
download | qt-creator-d0a07dcacb70eaa58b36cd9fc3b37f8c8ce8106c.tar.gz |
QmlJS: std::set instead of QList
This reduces the CPU time of Export::visibleInVContext() from 50% to 15%
on Windows, when switching files.
Change-Id: Iff82924c47d1b696c9d3d7ca40f49d9d02bcb3e6
Reviewed-by: hjk <hjk@qt.io>
Reviewed-by: Thomas Hartmann <thomas.hartmann@qt.io>
Diffstat (limited to 'src/libs/qmljs')
-rw-r--r-- | src/libs/qmljs/qmljslink.cpp | 3 | ||||
-rw-r--r-- | src/libs/qmljs/qmljsmodelmanagerinterface.cpp | 4 | ||||
-rw-r--r-- | src/libs/qmljs/qmljsviewercontext.h | 4 |
3 files changed, 7 insertions, 4 deletions
diff --git a/src/libs/qmljs/qmljslink.cpp b/src/libs/qmljs/qmljslink.cpp index 6c04966ced..2ce98efad3 100644 --- a/src/libs/qmljs/qmljslink.cpp +++ b/src/libs/qmljs/qmljslink.cpp @@ -123,7 +123,8 @@ Link::Link(const Snapshot &snapshot, const ViewerContext &vContext, const Librar { d->m_valueOwner = new ValueOwner; d->m_snapshot = snapshot; - d->m_importPaths = vContext.paths; + const QList<Utils::FilePath> list(vContext.paths.begin(), vContext.paths.end()); + d->m_importPaths = list; d->m_applicationDirectories = vContext.applicationDirectories; d->m_builtins = builtins; d->m_vContext = vContext; diff --git a/src/libs/qmljs/qmljsmodelmanagerinterface.cpp b/src/libs/qmljs/qmljsmodelmanagerinterface.cpp index 70eebf6faf..6d3fda5af3 100644 --- a/src/libs/qmljs/qmljsmodelmanagerinterface.cpp +++ b/src/libs/qmljs/qmljsmodelmanagerinterface.cpp @@ -63,8 +63,8 @@ static const char *qtQuickUISuffix = "ui.qml"; static void maybeAddPath(ViewerContext &context, const Utils::FilePath &path) { - if (!path.isEmpty() && !context.paths.contains(path)) - context.paths.append(path); + if (!path.isEmpty() && !context.paths.count(path) > 0) + context.paths.insert(path); } static QList<Utils::FilePath> environmentImportPaths() diff --git a/src/libs/qmljs/qmljsviewercontext.h b/src/libs/qmljs/qmljsviewercontext.h index 7d22136844..043f56b108 100644 --- a/src/libs/qmljs/qmljsviewercontext.h +++ b/src/libs/qmljs/qmljsviewercontext.h @@ -8,6 +8,8 @@ #include <QStringList> +#include <set> + namespace QmlJS { struct QMLJS_EXPORT ViewerContext @@ -21,7 +23,7 @@ struct QMLJS_EXPORT ViewerContext }; QStringList selectors; - QList<Utils::FilePath> paths; + std::set<Utils::FilePath> paths; QList<Utils::FilePath> applicationDirectories; Dialect language = Dialect::Qml; Flags flags = AddAllPaths; |