JDK 21のswitch式でpattern matchが遅かった件の2024年2月時点の続報

4ヶ月くらい前の以下のblogの続報です

xuwei-k.hatenablog.com

結論としては、10倍の差は消えて、1.5倍前後?に縮まっていました。 が、まだ遅いです!?!?!?

[info] Benchmark          Mode  Cnt      Score      Error  Units
[info] Bench.javaIfElse  thrpt   10  35641.221 ±  768.869  ops/s
[info] Bench.javaSwitch  thrpt   10  24007.870 ± 1719.115  ops/s
[info] Bench.scalaMatch  thrpt   10  35293.312 ±  158.851  ops/s

Javaのversionは以下

$ java --version
openjdk 23-ea 2024-09-17
OpenJDK Runtime Environment (build 23-ea+7-481)
OpenJDK 64-Bit Server VM (build 23-ea+7-481, mixed mode, sharing)

実験は以下の時点のものをローカルのMacでrun

https://github.com/xuwei-k/java-switch-benchmark/tree/eb7eeacfc4e214ecb51cc6b7aa1072c062de03e3

全部のログは以下

https://gist.github.com/xuwei-k/e481d19c0835621f1ed74c4405d6bcbd

詳細な変更はよく知らないですが、おそらく明らかに以下の変更だと思われます。

github.com

https://bugs.openjdk.org/browse/JDK-8319220