I'd like to thank Apache Harmony for their JDK library performance efforts. We were given a tip that the Harmony folks were doing some interesting work with the TreeMap collection class, and low and behold they were. The work is surrounding fat TreeMap nodes where each node contains several TreeMap entries. This greatly improves in order traversal of the TreeMap entries, and since SPECjbb2005 traverses over a TreeMap I can see why they did this. Controlled measurements showed the "fat" TreeMap significantly faster with in order traversals, and improved our SPECjbb2005 score by a solid 3-5% depending on the platform.
Considering the potential performance gain we started the effort of porting the Apache Harmony TreeMap code to JDK 6. We ran into a few performance snags in our performance regression testing, but with a bit more work we were able to develop a solution that was able to realize the performance gains without any negative impact on other workloads. We are now making the necessary steps to give back our code changes to Apache Harmony.
The new TreeMap is included in JDK 6 Update 6 Performance Release which is available for download at http://java.sun.com/performance.
Thanks again Harmony! Keep the JDK performance optimizations coming.
I'm please to announce the release of JDK 6 Update 6 Performance Release on SPARC platforms. This is the latest of our performance releases and is the culmination of our optimization efforts over the last year. With this JDK Sun achieved many world records on SPECjappserver2004, SPECweb2005, SPECjbb2005, and the first ever SPECjvm2008 submission. Please try it for yourself, download it at
http://java.sun.com/performance.
Where are the x64 bits? We believe in reliable performance, not just top line performance on targeted workloads. To achieve this we run a lot of tests, and our testing back end is often much longer than the development cycle for any given release. Long story short we found an issue that needed another build, so the x64 binaries will be delivered at a slight delay. Since the performance of an unreliable JDK is zero, we thought you'd understand. I'll update everyone once the x64 binaries are posted.
Finally, I'd like to thank the Apache Harmony project for their JDK optimizations efforts. No, you're not seeing things, I'm thanking Apache Harmony. More details to come in my next blog posting.