Presize some collections at the core of ParallelEvaluator We know what size these will be ahead of time, and they can get large, presize since there's no reason not to. Also change arg type for related methods to be Set since it's all we deal in and we know it will have better performance on size than generic Iterable. -- MOS_MIGRATED_REVID=101806154
diff --git a/src/main/java/com/google/devtools/build/skyframe/AbstractSkyFunctionEnvironment.java b/src/main/java/com/google/devtools/build/skyframe/AbstractSkyFunctionEnvironment.java index b8b5a76..a847f0f 100644 --- a/src/main/java/com/google/devtools/build/skyframe/AbstractSkyFunctionEnvironment.java +++ b/src/main/java/com/google/devtools/build/skyframe/AbstractSkyFunctionEnvironment.java
@@ -111,7 +111,7 @@ /** Implementations should set {@link #valuesMissing} as necessary. */ protected abstract Map<SkyKey, ValueOrUntypedException> getValueOrUntypedExceptions( - Iterable<SkyKey> depKeys); + Set<SkyKey> depKeys); @Override @Nullable
diff --git a/src/main/java/com/google/devtools/build/skyframe/ParallelEvaluator.java b/src/main/java/com/google/devtools/build/skyframe/ParallelEvaluator.java index a488d387..3c39e78 100644 --- a/src/main/java/com/google/devtools/build/skyframe/ParallelEvaluator.java +++ b/src/main/java/com/google/devtools/build/skyframe/ParallelEvaluator.java
@@ -295,9 +295,9 @@ @Override protected ImmutableMap<SkyKey, ValueOrUntypedException> getValueOrUntypedExceptions( - Iterable<SkyKey> depKeys) { + Set<SkyKey> depKeys) { checkActive(); - Set<SkyKey> keys = new LinkedHashSet<>(); + Set<SkyKey> keys = Sets.newLinkedHashSetWithExpectedSize(depKeys.size()); for (SkyKey depKey : depKeys) { // Canonicalize SkyKeys to save memory. keys.add(KEY_CANONICALIZER.intern(depKey));
diff --git a/src/test/java/com/google/devtools/build/lib/actions/util/ActionsTestUtil.java b/src/test/java/com/google/devtools/build/lib/actions/util/ActionsTestUtil.java index 88c72ef..41ab244 100644 --- a/src/test/java/com/google/devtools/build/lib/actions/util/ActionsTestUtil.java +++ b/src/test/java/com/google/devtools/build/lib/actions/util/ActionsTestUtil.java
@@ -22,6 +22,7 @@ import com.google.common.collect.ImmutableSet; import com.google.common.collect.Iterables; import com.google.common.collect.Lists; +import com.google.common.collect.Maps; import com.google.devtools.build.lib.actions.AbstractAction; import com.google.devtools.build.lib.actions.AbstractActionOwner; import com.google.devtools.build.lib.actions.Action; @@ -59,7 +60,6 @@ import java.util.ArrayList; import java.util.Collection; import java.util.Collections; -import java.util.HashMap; import java.util.LinkedHashSet; import java.util.LinkedList; import java.util.List; @@ -121,9 +121,9 @@ @Override protected Map<SkyKey, ValueOrUntypedException> getValueOrUntypedExceptions( - Iterable<SkyKey> depKeys) { + Set<SkyKey> depKeys) { EvaluationResult<SkyValue> evaluationResult; - Map<SkyKey, ValueOrUntypedException> result = new HashMap<>(); + Map<SkyKey, ValueOrUntypedException> result = Maps.newHashMapWithExpectedSize(depKeys.size()); try { evaluationResult = driver.evaluate(depKeys, /*keepGoing=*/false, ResourceUsage.getAvailableProcessors(), eventHandler);