From 83034fa444981a25a9c05c6806d6553895a46e56 Mon Sep 17 00:00:00 2001 From: adonovan Date: Fri, 11 Sep 2020 07:35:50 -0700 Subject: [PATCH] bazel syntax: memoize StarlarkSemantics.hashCode Recomputing it accounted for +5% CPU. (I had assumed ImmutableSortedMap would cache it, but I guessed wrong. I suppose it must account for its elements being mutable.) PiperOrigin-RevId: 331145205 --- .../google/devtools/build/lib/syntax/StarlarkSemantics.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/google/devtools/build/lib/syntax/StarlarkSemantics.java b/src/main/java/com/google/devtools/build/lib/syntax/StarlarkSemantics.java index e77c389c92d81c..04b4937b502d4f 100644 --- a/src/main/java/com/google/devtools/build/lib/syntax/StarlarkSemantics.java +++ b/src/main/java/com/google/devtools/build/lib/syntax/StarlarkSemantics.java @@ -49,9 +49,11 @@ public final class StarlarkSemantics { // Key is permitted too. // We use ImmutableSortedMap for the benefit of equals/hashCode/toString. private final ImmutableSortedMap map; + private final int hashCode; private StarlarkSemantics(ImmutableSortedMap map) { this.map = map; + this.hashCode = map.hashCode(); } /** Returns the value of a boolean option, which must have a [+-] prefix. */ @@ -169,7 +171,7 @@ boolean isFeatureEnabledBasedOnTogglingFlags(String enablingFlag, String disabli @Override public int hashCode() { - return map.hashCode(); + return hashCode; } @Override