aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib
diff options
context:
space:
mode:
authorGravatar Eric Fellheimer <felly@google.com>2015-08-27 22:11:30 +0000
committerGravatar Lukacs Berki <lberki@google.com>2015-08-28 09:22:20 +0000
commit8da940963075a3a90bd8035d94f8aa980e684de1 (patch)
tree45d7b5e9bba849e9d66d5ac985af5e4dabeaa6b7 /src/main/java/com/google/devtools/build/lib
parent718eb921ee4bd1fe0af5a3bbf496c4bcafd69740 (diff)
Avoid internal resizing when converting ListType.
-- MOS_MIGRATED_REVID=101723683
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib')
-rw-r--r--src/main/java/com/google/devtools/build/lib/packages/Type.java8
1 files changed, 5 insertions, 3 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/packages/Type.java b/src/main/java/com/google/devtools/build/lib/packages/Type.java
index 0e4344530d..b88c7a1f31 100644
--- a/src/main/java/com/google/devtools/build/lib/packages/Type.java
+++ b/src/main/java/com/google/devtools/build/lib/packages/Type.java
@@ -20,6 +20,8 @@ import com.google.common.base.Preconditions;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableMap;
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.packages.License.DistributionType;
import com.google.devtools.build.lib.packages.License.LicenseParsingException;
@@ -34,7 +36,6 @@ import com.google.devtools.build.lib.syntax.SkylarkList;
import com.google.devtools.build.lib.util.LoggingUtil;
import com.google.devtools.build.lib.util.StringCanonicalizer;
-import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.LinkedHashSet;
@@ -927,9 +928,10 @@ public abstract class Type<T> {
if (!(x instanceof Iterable<?>)) {
throw new ConversionException(this, x, what);
}
- List<ElemT> result = new ArrayList<>();
int index = 0;
- for (Object elem : (Iterable<?>) x) {
+ Iterable<?> iterable = (Iterable<?>) x;
+ List<ElemT> result = Lists.newArrayListWithExpectedSize(Iterables.size(iterable));
+ for (Object elem : iterable) {
ElemT converted = elemType.convert(elem, "element " + index + " of " + what, currentRule);
if (converted != null) {
result.add(converted);