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