JDK 25: String-Performanceverbesserung durch konstantes Falten des Hashcodes
JDK 25 verbessert die Performance der String-Klasse deutlich, indem es das konstante Falten der Funktion String::hashCode ermöglicht. Dies führt zu erheblichen Geschwindigkeitsverbesserungen, insbesondere wenn Strings als Schlüssel in statischen, unveränderlichen Maps verwendet werden, beispielsweise wenn MethodHandles für native Aufrufe über String-Schlüssel aufgerufen werden. Benchmarks zeigen eine Verbesserung um mehr als das 8-fache. Diese Optimierung wird erreicht, indem das interne Feld String.hash mit der Annotation @Stable markiert wird. Dies ermöglicht es der JVM, den Hashcode zu cachen und wiederzuverwenden und so die Neuberechnung für nicht-null Hashcodes zu vermeiden. Obwohl ein Null-Hashcode diese Optimierung behindern kann, wird eine zukünftige Korrektur erwartet.
Mehr lesen