From e99d8986db6f0b5805399e73798b56be2bac46bc Mon Sep 17 00:00:00 2001 From: Dmitry Zhuravlev Date: Mon, 15 Jun 2020 18:23:14 +0300 Subject: [PATCH] vcs-ignore: optimize removeIgnoredFiles Use HashSet instead ArrayList to store files which should be removed. Otherwise it would lead to possible ArrayList.contains in ignoredSet.removeAll in case of large removedIgnoredFilePaths. Relates to IDEA-242817. GitOrigin-RevId: c61791a5182426ee4b8ed80f96728fb4651419c7 --- .../intellij/dvcs/ignore/VcsRepositoryIgnoredFilesHolder.java | 3 +-- .../dvcs/ignore/VcsRepositoryIgnoredFilesHolderBase.kt | 4 ++-- plugins/hg4idea/src/org/zmlx/hg4idea/HgVFSListener.java | 2 +- 3 files changed, 4 insertions(+), 5 deletions(-) diff --git a/platform/dvcs-api/src/com/intellij/dvcs/ignore/VcsRepositoryIgnoredFilesHolder.java b/platform/dvcs-api/src/com/intellij/dvcs/ignore/VcsRepositoryIgnoredFilesHolder.java index bd3d0bcf71d0..3b6b7306cb67 100644 --- a/platform/dvcs-api/src/com/intellij/dvcs/ignore/VcsRepositoryIgnoredFilesHolder.java +++ b/platform/dvcs-api/src/com/intellij/dvcs/ignore/VcsRepositoryIgnoredFilesHolder.java @@ -7,7 +7,6 @@ import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import java.util.Collection; -import java.util.List; import java.util.Set; public interface VcsRepositoryIgnoredFilesHolder extends Disposable { @@ -29,7 +28,7 @@ public interface VcsRepositoryIgnoredFilesHolder extends Disposable { boolean containsFile(@NotNull FilePath file); @NotNull - List removeIgnoredFiles(@NotNull Collection files); + Collection removeIgnoredFiles(@NotNull Collection files); @NotNull Set getIgnoredFilePaths(); diff --git a/platform/dvcs-impl/src/com/intellij/dvcs/ignore/VcsRepositoryIgnoredFilesHolderBase.kt b/platform/dvcs-impl/src/com/intellij/dvcs/ignore/VcsRepositoryIgnoredFilesHolderBase.kt index 34f3c8082411..012911b28695 100644 --- a/platform/dvcs-impl/src/com/intellij/dvcs/ignore/VcsRepositoryIgnoredFilesHolderBase.kt +++ b/platform/dvcs-impl/src/com/intellij/dvcs/ignore/VcsRepositoryIgnoredFilesHolderBase.kt @@ -139,8 +139,8 @@ abstract class VcsRepositoryIgnoredFilesHolderBase( } } - override fun removeIgnoredFiles(filePaths: Collection): List { - val removedIgnoredFilePaths = arrayListOf() + override fun removeIgnoredFiles(filePaths: Collection): Collection { + val removedIgnoredFilePaths = hashSetOf() val filePathsSet = filePaths.toHashSet() val ignored = SET_LOCK.read { ignoredSet.toHashSet() } diff --git a/plugins/hg4idea/src/org/zmlx/hg4idea/HgVFSListener.java b/plugins/hg4idea/src/org/zmlx/hg4idea/HgVFSListener.java index 4e3cbdbd668d..2e94859161c0 100644 --- a/plugins/hg4idea/src/org/zmlx/hg4idea/HgVFSListener.java +++ b/plugins/hg4idea/src/org/zmlx/hg4idea/HgVFSListener.java @@ -278,7 +278,7 @@ public class HgVFSListener extends VcsVFSListener { Map> groupFilePathsByHgRoots = HgUtil.groupFilePathsByHgRoots(myProject, filePaths); return groupFilePathsByHgRoots.entrySet().stream() .map(entry -> getIgnoreRepoHolder(entry.getKey()).removeIgnoredFiles(entry.getValue())) - .flatMap(List::stream).collect(Collectors.toList()); + .flatMap(Collection::stream).collect(Collectors.toList()); } /**