JAVA-String-Performance deutlich verbessert
(inside.java)Einleitung
- In JDK 25 wurde
String::hashCodeso verbessert, dass es in den meisten Fällen per Constant Folding behandelt wird. - Bei Lookups in unveränderlichen Maps mit String-Schlüsseln steigt die Performance deutlich.
Hauptteil
- In einer
Map<String, MethodHandle>-Struktur wird der Key-Lookup statisch optimiert. - Intern wird auf das Feld
String.hash@Stableangewendet; sobald der Hash-Wert feststeht, vertraut die JVM dem Cache. - Dadurch werden Hash-Berechnung, Map-Index-Berechnung und Method-Handle-Lookup vollständig zur Compile-Zeit als Konstanten behandelt.
- Benchmark-Ergebnisse zeigen im Vergleich zu JDK 24 eine Performance-Verbesserung von bis zum Achtfachen.
- Ein Nachteil ist, dass bei einem Hashcode von 0 kein Constant Folding erfolgt (einschließlich des Strings
""). - Über JEP 502 soll künftig auch in User-Code eine ähnliche Funktion bereitgestellt werden.
Fazit
- Die
String-Optimierung in JDK 25 ist besonders wirksam für Code mit statischen Strukturen. @Stableist intern reserviert, könnte aber künftig zu einer öffentlich verfügbaren Funktion erweitert werden.- Mit der Einführung aktueller JDK-Versionen lässt sich die Performance bei String-basierten Map-Verarbeitungen deutlich verbessern.
Noch keine Kommentare.