RFR: 8335802: Improve startup speed HexFormat uses boolean instead of enum
Chen Liang
liach at openjdk.org
Wed Jul 10 20:07:56 UTC 2024
On Fri, 5 Jul 2024 23:06:17 GMT, Shaojin Wen <duke at openjdk.org> wrote:
> The current HexFormat defines an Enum to represent LowerCase and UpperCase
>
>
> class HexFormat {
> private enum Case {
> LOWERCASE,
> UPPERCASE
> }
> }
>
>
> This will cause the JVM to load one more class when it starts, which can be seen as follows
>
>
> public class Startup {
> public static void main(String[] args) {}
> }
>
>
>
> java -verbose:class Startup
>
>
>
> [0.094s][info][class,load] java.util.HexFormat$Case source: /Users/.../jdk/modules/java.base
>
>
> There are only two cases here, which can be represented by boolean, which is clearer and can improve the startup speed a little bit.
The internal enum representation is an unnecessary abstraction; a boolean for uppercase is used for all public endpoints in `isUpperCase` and `toString`, so using the same boolean internally makes sense.
Do you think we should call this field `ucase` or `uppercase`?
src/java.base/share/classes/java/util/HexFormat.java line 1:
> 1: /*
Copyright year needs an update
-------------
PR Review: https://git.openjdk.org/jdk/pull/20060#pullrequestreview-2169018970
PR Review Comment: https://git.openjdk.org/jdk/pull/20060#discussion_r1672225028
More information about the core-libs-dev
mailing list