diff options
author | 2015-08-27 22:11:30 +0000 | |
---|---|---|
committer | 2015-08-28 09:22:20 +0000 | |
commit | 8da940963075a3a90bd8035d94f8aa980e684de1 (patch) | |
tree | 45d7b5e9bba849e9d66d5ac985af5e4dabeaa6b7 /src/main/java/com/google/devtools/build/lib | |
parent | 718eb921ee4bd1fe0af5a3bbf496c4bcafd69740 (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.java | 8 |
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); |