Review Request CR#7118743 : Alternative Hashing for String with Hash-based Maps (original) (raw)

Doug Lea dl at cs.oswego.edu
Sat May 26 11:29:25 UTC 2012


On 05/24/12 15:34, Mike Duigou wrote:

Hello All;

I have updated the webrevs for alternative hashing for String [2] althashing "8" webrev : http://cr.openjdk.java.net/~mduigou/althashing8/9/webrev/

Not that it matters at all since they will be changed anyway for JDK8 CHM, but all of the ConcurrentHashMap diffs of (old) int h = hash(key.hashCode()); could instead be changed to int h = (k instanceof String)? k.hash32() ^ hashSeed : hash(k.hashCode()); without changing hash() method. Which as Remi mentioned, is likely to have more benefit than you might expect vs offloading mechanics into revised version of hash(), in part by unburying a megamorphic call and nullcheck by one level. (This is why it was done this way in the first place.)

Perhaps this applies elsewhere.

(Sometime this summer, I hope to write up something on the various "little" coding issues that may be applicable for improving performance of library code. As people mentioned wrt the similar private accessor case, most of these issues are not interesting/useful for application code, but there's no reason not to address them inside heavily used core libraries. The effects are difficult to measure in any small set of tests using these library components, so usually the best course of action is to avoid known potential performance issues.)

-Doug



More information about the core-libs-dev mailing list