From 912b4763e00437d32759ba948e9bc678ff53b6be Mon Sep 17 00:00:00 2001 From: Marco Bubke Date: Mon, 5 Aug 2019 14:18:01 +0200 Subject: ClangPchManager: Optimize difference computing Don't create temporary containers. Change-Id: I28e8999c3443a20c8ef6da3a048ec90fbb99a3c3 Reviewed-by: Tim Jenssen --- .../clangpchmanagerbackend/source/projectpartsmanager.cpp | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/src/tools/clangpchmanagerbackend/source/projectpartsmanager.cpp b/src/tools/clangpchmanagerbackend/source/projectpartsmanager.cpp index 599605d2ab..548dd373ac 100644 --- a/src/tools/clangpchmanagerbackend/source/projectpartsmanager.cpp +++ b/src/tools/clangpchmanagerbackend/source/projectpartsmanager.cpp @@ -189,21 +189,20 @@ ProjectPartsManagerInterface::UpToDataProjectParts ProjectPartsManager::checkDep const auto &newSources = buildDependency.sources; - SourceEntries updatedSourceTyes; - updatedSourceTyes.reserve(newSources.size()); + Change change = Change::No; std::set_symmetric_difference(newSources.begin(), newSources.end(), oldSources.begin(), oldSources.end(), - std::back_inserter(updatedSourceTyes), + make_iterator([&](SourceEntry entry) { + change = changedSourceType(entry, change); + }), [](SourceEntry first, SourceEntry second) { return std::tie(first.sourceId, first.sourceType) < std::tie(second.sourceId, second.sourceType); }); - auto change = changedSourceType(updatedSourceTyes); - switch (change) { case Change::Project: updateProjectProjectParts.emplace_back(std::move(projectPart)); @@ -218,9 +217,6 @@ ProjectPartsManagerInterface::UpToDataProjectParts ProjectPartsManager::checkDep } if (change == Change::No) { - SourceEntries updatedTimeStamps; - updatedTimeStamps.reserve(newSources.size()); - Change change = mismatch_collect( newSources.begin(), newSources.end(), -- cgit v1.2.1