Java文字列(String)の性能が大幅向上
(inside.java)序論
- JDK 25で
String::hashCodeの大部分が定数畳み込みされるよう改善。 - 不変Mapで文字列キーによる検索時の性能が大きく向上。
本論
Map<String, MethodHandle>構造で key lookup が静的に最適化される。- 内部的に
String.hashフィールドへ@Stableを適用し、hash 値が固定されると JVM がそのキャッシュを信頼する。 - これにより、ハッシュ計算、Map インデックス計算、メソッドハンドル検索のすべてがコンパイル時に定数として処理される。
- ベンチマーク結果では、従来の JDK 24 と比べて最大 8 倍以上の性能改善が確認された。
- 欠点は、hashcode が 0 の場合は定数畳み込みされないこと(
""文字列を含む)。 - JEP 502 を通じて、将来的にはユーザーコードでも同様の機能が提供される予定。
結論
- JDK 25 の
String最適化は、静的構造ベースのコードに効果的。 @Stableは内部専用だが、今後は公開機能へ拡張される可能性がある。- 最新 JDK を導入すれば、文字列ベースの Map 処理性能を大きく改善できる。
まだコメントはありません。