diff options
author | 2016-08-10 21:36:02 +0000 | |
---|---|---|
committer | 2016-08-11 09:16:01 +0000 | |
commit | cfd61cf9b12089804118a45eabbf329880ea4641 (patch) | |
tree | 7e2676ce25fb27a524d20a755881ab03bc187aa5 /src/main | |
parent | e41857b2e3bd279e3b00a7137b750afd0bc16868 (diff) |
Properly size compact hash map in order to mitigate GC churn.
--
MOS_MIGRATED_REVID=129912633
Diffstat (limited to 'src/main')
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/query2/SkyQueryEnvironment.java | 13 |
1 files changed, 10 insertions, 3 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/query2/SkyQueryEnvironment.java b/src/main/java/com/google/devtools/build/lib/query2/SkyQueryEnvironment.java index 586c493485..40d8a89810 100644 --- a/src/main/java/com/google/devtools/build/lib/query2/SkyQueryEnvironment.java +++ b/src/main/java/com/google/devtools/build/lib/query2/SkyQueryEnvironment.java @@ -87,7 +87,6 @@ import com.google.devtools.build.skyframe.SkyKey; import com.google.devtools.build.skyframe.SkyValue; import com.google.devtools.build.skyframe.WalkableGraph; import com.google.devtools.build.skyframe.WalkableGraph.WalkableGraphFactory; - import java.util.ArrayDeque; import java.util.ArrayList; import java.util.Collection; @@ -106,7 +105,6 @@ import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.Executors; import java.util.concurrent.atomic.AtomicBoolean; import java.util.logging.Logger; - import javax.annotation.Nullable; /** @@ -427,7 +425,8 @@ public class SkyQueryEnvironment extends AbstractBlazeQueryEnvironment<Target> private Collection<Target> processRawReverseDeps(Map<Target, Collection<Target>> rawReverseDeps) { Set<Target> result = CompactHashSet.create(); - CompactHashSet<Target> visited = CompactHashSet.create(); + CompactHashSet<Target> visited = + CompactHashSet.createWithExpectedSize(totalSizeOfCollections(rawReverseDeps.values())); Set<Label> keys = CompactHashSet.create(Collections2.transform(rawReverseDeps.keySet(), TARGET_LABEL_FUNCTION)); @@ -449,6 +448,14 @@ public class SkyQueryEnvironment extends AbstractBlazeQueryEnvironment<Target> return result; } + private static <T> int totalSizeOfCollections(Iterable<Collection<T>> nestedCollections) { + int totalSize = 0; + for (Collection<T> collection : nestedCollections) { + totalSize += collection.size(); + } + return totalSize; + } + @Override public Set<Target> getTransitiveClosure(Set<Target> targets) { Set<Target> visited = new HashSet<>(); |