Re: java8 up to 6x slower than java7
On 15.02.2014 12:52, Jan Burse wrote:
I must admit that I don't use the Java hashmap and have written
a custom version. The reason for this custom version was basically
to allow faster iteration, and not allocating an iterator. This
was already done before JDK 8 came out, independent of JDK 8.
I also once wrote a Map using double Hashing. The reason at the time
was to avoid the many Entry instances. But we did only replace certain
uses of HashMap which we knew would create and GC lots of Entry
instances and have rare iterations (Entry instances were created during
iteration only, this was the downside).
But I now read that JDK 8 has introduced a new realization
of HashMap. See for example:
http://blog.credera.com/technology-insights/java/java-8-part-3-hashmap-java-time/
How is this supposed to work for keys which do not implement Comparable?
Or are they using the hash code only for the tree arrangement? Also,
the article does not mention that the fill factor limits the average
length of the chain used for linear probing.
It's also not mentioned in the article how they create the tree. You
can use an object per node but you can sometimes also use an array.
So I understand that you could see dramatic negative changes.
Sorry to hear that.
I am surprised that they do such a dramatic change to a standard library
class. In the past Sun / Oracle seemed to always try to minimize the
impact on programs.
I will check my code more closely now, and try to eliminate more
of HashMap by my custom code where appropriate.
I would first do some analysis before going there to determine how long
linear probing is on average.
Kind regards
robert