hg: jdk8/tl/jdk: 7126277: Alternative String hashing implementation (original) (raw)

Ulf Zibis Ulf.Zibis at gmx.de
Thu May 31 08:40:38 UTC 2012


Hi Mike,

some more questions:

public class Hashmap<K,V> {

Why you declare and assign variable h before the if statement? And why you set h ^= k.hashCode(); in the else branch, but not the remaining instructions to complete the calculation? Similar (but why little different?) for: Hashtable WeakHashMap ConcurrentHashMap So couldn't method hash(Object) be moved to AbstractMap? Why in WeakHashMap method hash(Object) is not final? (In this case I could exceptionally override it for a custom implementation as former desired for all hash maps.)

-Ulf

Am 31.05.2012 07:19, schrieb mike.duigou at oracle.com:

Changeset: 43bd5ee0205e Author: mduigou Date: 2012-05-30 22:18 -0700 URL: http://hg.openjdk.java.net/jdk8/tl/jdk/rev/43bd5ee0205e

7126277: Alternative String hashing implementation Summary: All of the hashing based Map implementations: HashMap, Hashtable, LinkedHashMap, WeakHashMap and ConcurrentHashMap are modified to use an enhanced hashing algorithm for string keys when the capacity of the hash table has ever grown beyond 512 entries. The enhanced hashing implementation uses the murmur3 hashing algorithm along with random hash seeds and index masks. These enhancements mitigate cases where colliding String hash values could result in a performance bottleneck. Reviewed-by: alanb, forax, dl ! make/java/java/FILESjava.gmk ! src/share/classes/java/lang/String.java ! src/share/classes/java/util/HashMap.java ! src/share/classes/java/util/Hashtable.java ! src/share/classes/java/util/LinkedHashMap.java ! src/share/classes/java/util/WeakHashMap.java ! src/share/classes/java/util/concurrent/ConcurrentHashMap.java + src/share/classes/sun/misc/Hashing.java ! test/java/util/Collection/BiggernYours.java ! test/java/util/Hashtable/HashCode.java ! test/java/util/Hashtable/SimpleSerialization.java + test/java/util/Map/Collisions.java ! test/java/util/Map/Get.java + test/sun/misc/Hashing.java



More information about the core-libs-dev mailing list