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);