On Mon, 22 Apr 2024 10:34:29 GMT, Claes Redestad <[email protected]> wrote:
> This switch expression in `Locale::createLocale` is causing a somewhat large
> startup regression on my local system. Desugaring to if statements seem like
> the right thing to do while we investigate ways to further reduce overheads
> in `SwitchBootstraps`.
>
> These numbers are against a baseline which include #18865 and #18845, which
> already improved the situation:
>
>
> Name Cnt Base Error Test Error
> Unit Change
> Perfstartup-Noop 20 40,500 ± 1,942 31,000 ± 2,673
> ms/op 1,31x (p = 0,000*)
> :.cycles 143254849,000 ± 3398321,355 102205427,650 ± 2192784,853
> cycles 0,71x (p = 0,000*)
> :.instructions 307138448,850 ± 2095834,550 219415574,800 ± 376992,067
> instructions 0,71x (p = 0,000*)
> :.taskclock 39,500 ± 1,942 22,500 ± 3,858
> ms 0,57x (p = 0,000*)
> * = significant
>
>
> Comparing to a baseline without those recent improvements the overhead was
> almost the double:
>
> Name Cnt Base Error Test Error
> Unit Change
> Perfstartup-Noop 20 50,000 ± 0,000 31,000 ± 2,673
> ms/op 1,61x (p = 0,000*)
> :.cycles 187047932,000 ± 3330400,381 102205427,650 ± 2192784,853
> cycles 0,55x (p = 0,000*)
> :.instructions 408219060,350 ± 4031173,140 219415574,800 ± 376992,067
> instructions 0,54x (p = 0,000*)
> :.taskclock 53,500 ± 4,249 22,500 ± 3,858
> ms 0,42x (p = 0,000*)
> * = significant
src/java.base/share/classes/java/util/Locale.java line 1003:
> 1001: return new Locale(lk.base, lk.exts);
> 1002: } else {
> 1003: throw new InternalError("should not happen");
The default branch was required in the switch. Can we simply drop this branch
and have a ClassCastException to LocalKey instead?
-------------
PR Review Comment: https://git.openjdk.org/jdk/pull/18882#discussion_r1574727393