diff options
author | Michajlo Matijkiw <michajlo@google.com> | 2016-07-13 21:49:42 +0000 |
---|---|---|
committer | Kristina Chodorow <kchodorow@google.com> | 2016-07-14 11:12:55 +0000 |
commit | 9f1159d255075fb8427076eb60fa5613fa0845ca (patch) | |
tree | 8d7bf8ad4a6e029a030de8d4a3a02396e8223e7a | |
parent | 8e1130f625d642619f929ebac4ebb277bdf0f05b (diff) |
Memoize TestSize.name().toLowerCase() -> TestSize mappings
Saves some needless garbage generation. We expect TestSize#getTestSize(String)
to always pass in a lowercase value, which we promptly change to uppercase for
the enum lookup. Instead memoize the lowercase -> TestSize mapping to avoid
this call.
--
MOS_MIGRATED_REVID=127362499
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/packages/TestSize.java | 15 |
1 files changed, 13 insertions, 2 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/packages/TestSize.java b/src/main/java/com/google/devtools/build/lib/packages/TestSize.java index 904fed61d8..3a7e7caed8 100644 --- a/src/main/java/com/google/devtools/build/lib/packages/TestSize.java +++ b/src/main/java/com/google/devtools/build/lib/packages/TestSize.java @@ -14,9 +14,9 @@ package com.google.devtools.build.lib.packages; +import com.google.common.collect.ImmutableMap; import com.google.devtools.build.lib.syntax.Type; import com.google.devtools.common.options.OptionsParsingException; - import java.util.Set; /** @@ -35,6 +35,17 @@ public enum TestSize { LARGE(TestTimeout.LONG, 20), ENORMOUS(TestTimeout.ETERNAL, 30); + // Memoize canonical lowercase name -> TestSize mappings to avoid extraneous toUpperCases for + // valueOf. + private static final ImmutableMap<String, TestSize> CANONICAL_LOWER_CASE_NAME_TABLE; + static { + ImmutableMap.Builder<String, TestSize> builder = ImmutableMap.builder(); + for (TestSize size : TestSize.values()) { + builder.put(size.name().toLowerCase(), size); + } + CANONICAL_LOWER_CASE_NAME_TABLE = builder.build(); + } + private final TestTimeout timeout; private final int defaultShards; @@ -95,7 +106,7 @@ public enum TestSize { return null; } try { - return TestSize.valueOf(attr.toUpperCase()); + return CANONICAL_LOWER_CASE_NAME_TABLE.get(attr); } catch (IllegalArgumentException e) { return null; } |