From 22fb18c0a8118e2a3b1f417400e2181aef275ea2 Mon Sep 17 00:00:00 2001 From: Christian Kandeler Date: Fri, 25 Feb 2022 16:14:26 +0100 Subject: [PATCH] LanguageClient: Speed up DiagnosticManager::showDiagnostics() - Do project file look-up only if we have diagnostics. - Move hash access out of the loop. Change-Id: I9dd03dbfe8d7515e731cbeb0ce51639d9df993b4 Reviewed-by: David Schulz Reviewed-by: --- src/plugins/languageclient/diagnosticmanager.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/plugins/languageclient/diagnosticmanager.cpp b/src/plugins/languageclient/diagnosticmanager.cpp index 381e0f9fc45..2b1d66c477d 100644 --- a/src/plugins/languageclient/diagnosticmanager.cpp +++ b/src/plugins/languageclient/diagnosticmanager.cpp @@ -125,12 +125,14 @@ void DiagnosticManager::showDiagnostics(const DocumentUri &uri, int version) if (TextDocument *doc = TextDocument::textDocumentForFilePath(filePath)) { QList extraSelections; const VersionedDiagnostics &versionedDiagnostics = m_diagnostics.value(uri); - if (versionedDiagnostics.version.value_or(version) == version) { + if (versionedDiagnostics.version.value_or(version) == version + && !versionedDiagnostics.diagnostics.isEmpty()) { + QList &marks = m_marks[filePath]; const bool isProjectFile = m_client->project() && m_client->project()->isKnownFile(filePath); for (const Diagnostic &diagnostic : versionedDiagnostics.diagnostics) { extraSelections << toDiagnosticsSelections(diagnostic, doc->document()); - m_marks[filePath].append(m_textMarkCreator(filePath, diagnostic, isProjectFile)); + marks.append(m_textMarkCreator(filePath, diagnostic, isProjectFile)); } }