Five months has past since my first and second looks at Java VMs. At the time we were just releasing the version 1.3 of our Linux distrobution. This time around we are very close to the relase of version 1.4. During that time there have been new versions of all three VMs. Here at BUG, we have moved to a newer kernel (2.6.27) and have made considerable improvements to our initial forays into OE/Poky development. The results are promising with all three VMs doing signficantly better. Some of this can be attributed to the newer kernel and cleaner distro, but a significant part of this improvement can be attributed to the communities around the three VMs helping us improve different aspects of the VMs in our build.
The most impressive change is with the Cacao VM. We are now using version 0.99.3 which takes advantage of the vector floating point coprocessor onboard our Freescale MX31 cpu. This explains the dramatic improvement in Cacao from our previous bencharks so we are thankful to the community who made these changes. We saw an average of nearly 30% improvement this time around. While these are synthetic benchmarks, real world performance will certaintly be better as well. It is worth noting that we are running Cacao with GNU Classpath at the moment, OpenJDK might become the better option in the future as we make it more stable.
We also upgraded to JamVM 1.5.1 this time around. We saw improvements in performance here as well, a bit less than for Cacao but still impressive gains. Like Cacao, we build JamVM with GNU Classpath.
Finally, with phoneME we upgraded the cvm to the mr2-b97 version. We saw major gains between the first and second posts of this series because we were able to get JIT running on the BUG the second time around. This time however, we saw no difference in phoneME's performance. That isn't all that disappointing since it was already the best performing VM of the bunch. It is worth noting here that phoneME is running with a much lighter load since it does not have GNU Classpath running on top.
It is worth looking at the disparity between phoneME and the other two VMs the last time we looked at these benchmarks.
Previously to enjoy the added libraries of GNU Classpath you had to sacrifice a significant amount of performance. Now with the work by both communities and here at Bug Labs Cacao and JamVM have made significant performance improvements. While phoneME is still leading the pack, its lead has been cut by more than half.