From 07d30b8632fd73d2ff47f4e9e60c4935dbce4f5c Mon Sep 17 00:00:00 2001 From: Thomas Hartmann Date: Thu, 20 Oct 2022 17:43:50 +0200 Subject: [PATCH] QmlDesigner: Retrieve possible imports only once per project Getting the possible imports is slow. Add extra log for setupPossibleImports(). Task-number: QDS-8042 Change-Id: I9afee8d0fdedadb5694a47433ac343a398f52b68 Reviewed-by: Marco Bubke Reviewed-by: Qt CI Bot Reviewed-by: Tim Jenssen --- .../designercore/model/texttomodelmerger.cpp | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/src/plugins/qmldesigner/designercore/model/texttomodelmerger.cpp b/src/plugins/qmldesigner/designercore/model/texttomodelmerger.cpp index 2635ab42878..eaf74c2e125 100644 --- a/src/plugins/qmldesigner/designercore/model/texttomodelmerger.cpp +++ b/src/plugins/qmldesigner/designercore/model/texttomodelmerger.cpp @@ -990,9 +990,17 @@ static QList generatePossibleLibraryImports(const QHashlibraryImports(viewContext); - QHash filteredPossibleImportKeys - = filterPossibleImportKeys(m_possibleImportKeys, m_rewriterView->model()); + static QUrl lastProjectUrl; + auto &externalDependencies = m_rewriterView->externalDependencies(); + auto projectUrl = externalDependencies.projectUrl(); + + if (m_possibleImportKeys.isEmpty() || projectUrl != lastProjectUrl) + m_possibleImportKeys = snapshot.importDependencies()->libraryImports(viewContext); + + lastProjectUrl = projectUrl; + + QHash filteredPossibleImportKeys = filterPossibleImportKeys( + m_possibleImportKeys, m_rewriterView->model()); const QmlJS::Imports *imports = m_scopeChain->context()->imports(m_document.data()); if (imports) @@ -1139,6 +1147,9 @@ bool TextToModelMerger::load(const QString &data, DifferenceHandler &differenceH collectLinkErrors(&errors, ctxt); setupPossibleImports(snapshot, m_vContext); + + qCInfo(rewriterBenchmark) << "possible imports:" << time.elapsed(); + setupImports(m_document, differenceHandler); qCInfo(rewriterBenchmark) << "imports setup:" << time.elapsed();