From 50e6a9669673d6411615dc59171708ef2f016207 Mon Sep 17 00:00:00 2001 From: Eike Ziller Date: Thu, 28 Jul 2022 15:16:26 +0200 Subject: [PATCH] DocumentModel: Improve performance of (document|entry)ForFilePath Don't iterate the list, but look up in the hash. Implicitly improves performance of text mark creation. Change-Id: Ic1f7e118b96f81bb5922a94039d3d85027a118a5 Reviewed-by: hjk --- .../coreplugin/editormanager/documentmodel.cpp | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/src/plugins/coreplugin/editormanager/documentmodel.cpp b/src/plugins/coreplugin/editormanager/documentmodel.cpp index f6fcee9d874..20712a9d79d 100644 --- a/src/plugins/coreplugin/editormanager/documentmodel.cpp +++ b/src/plugins/coreplugin/editormanager/documentmodel.cpp @@ -617,10 +617,10 @@ DocumentModel::Entry *DocumentModel::entryForDocument(IDocument *document) DocumentModel::Entry *DocumentModel::entryForFilePath(const Utils::FilePath &filePath) { - const Utils::optional index = d->indexOfFilePath(filePath); - if (!index) + if (filePath.isEmpty()) return nullptr; - return d->m_entries.at(*index); + const FilePath fixedPath = DocumentManager::filePathKey(filePath, DocumentManager::ResolveLinks); + return d->m_entryByFixedPath.value(fixedPath); } QList DocumentModel::openedDocuments() @@ -630,10 +630,8 @@ QList DocumentModel::openedDocuments() IDocument *DocumentModel::documentForFilePath(const Utils::FilePath &filePath) { - const Utils::optional index = d->indexOfFilePath(filePath); - if (!index) - return nullptr; - return d->m_entries.at(*index)->document; + const Entry *entry = entryForFilePath(filePath); + return entry ? entry->document : nullptr; } QList DocumentModel::editorsForFilePath(const Utils::FilePath &filePath)