aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/packages
diff options
context:
space:
mode:
authorGravatar Michajlo Matijkiw <michajlo@google.com>2016-07-13 21:49:42 +0000
committerGravatar Kristina Chodorow <kchodorow@google.com>2016-07-14 11:12:55 +0000
commit9f1159d255075fb8427076eb60fa5613fa0845ca (patch)
tree8d7bf8ad4a6e029a030de8d4a3a02396e8223e7a /src/main/java/com/google/devtools/build/lib/packages
parent8e1130f625d642619f929ebac4ebb277bdf0f05b (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
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/packages')
-rw-r--r--src/main/java/com/google/devtools/build/lib/packages/TestSize.java15
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;
}