CPlusPlus: Don't double uniquify

CppDocument::includedFiles removes duplicates.
Snapshot::allIncludesForDocument also removes duplicates.
Once is enough.

This doubles test scan performance on my machine.

Change-Id: I892908cf0820cfa11854ac3d82e9175d1fc38043
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
This commit is contained in:
Marcus Tillmanns
2023-05-09 15:11:18 +02:00
parent c68a013a3e
commit 905d76961d
2 changed files with 10 additions and 4 deletions

View File

@@ -296,12 +296,13 @@ void Document::setLastModified(const QDateTime &lastModified)
_lastModified = lastModified; _lastModified = lastModified;
} }
FilePaths Document::includedFiles() const FilePaths Document::includedFiles(Duplicates duplicates) const
{ {
FilePaths files; FilePaths files;
for (const Include &i : std::as_const(_resolvedIncludes)) for (const Include &i : std::as_const(_resolvedIncludes))
files.append(i.resolvedFileName()); files.append(i.resolvedFileName());
FilePath::removeDuplicates(files); if (duplicates == Duplicates::Remove)
FilePath::removeDuplicates(files);
return files; return files;
} }
@@ -771,7 +772,7 @@ QSet<FilePath> Snapshot::allIncludesForDocument(const FilePath &filePath) const
while (!files.isEmpty()) { while (!files.isEmpty()) {
FilePath file = files.pop(); FilePath file = files.pop();
if (Document::Ptr doc = document(file)) { if (Document::Ptr doc = document(file)) {
const FilePaths includedFiles = doc->includedFiles(); const FilePaths includedFiles = doc->includedFiles(Document::Duplicates::Keep);
for (const FilePath &inc : includedFiles) { for (const FilePath &inc : includedFiles) {
if (!result.contains(inc)) { if (!result.contains(inc)) {
result.insert(inc); result.insert(inc);

View File

@@ -297,7 +297,12 @@ public:
} }
}; };
Utils::FilePaths includedFiles() const; enum class Duplicates {
Remove,
Keep,
};
Utils::FilePaths includedFiles(Duplicates duplicates = Duplicates::Remove) const;
void addIncludeFile(const Include &include); void addIncludeFile(const Include &include);
const QList<Include> &resolvedIncludes() const const QList<Include> &resolvedIncludes() const