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 <hjk@qt.io>
This commit is contained in:
Eike Ziller
2022-07-28 15:16:26 +02:00
parent 7d3560a209
commit 50e6a96696

View File

@@ -617,10 +617,10 @@ DocumentModel::Entry *DocumentModel::entryForDocument(IDocument *document)
DocumentModel::Entry *DocumentModel::entryForFilePath(const Utils::FilePath &filePath)
{
const Utils::optional<int> 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<IDocument *> DocumentModel::openedDocuments()
@@ -630,10 +630,8 @@ QList<IDocument *> DocumentModel::openedDocuments()
IDocument *DocumentModel::documentForFilePath(const Utils::FilePath &filePath)
{
const Utils::optional<int> 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<IEditor *> DocumentModel::editorsForFilePath(const Utils::FilePath &filePath)