Benchmarking the hard-float JDK8 JVM developer preview on the Raspberry Pi

Previously I posted about Benchmarking Java speed on the Raspberry Pi. The bottom line is that the performance of the OpenJDK JVM on the Pi is rather disappointing, primarily because it doesn’t have a functioning JIT compiler integrated. However, Oracle have now released a Developer preview of JDK8 for ARM, including support for Raspbian on the Pi. I’ve downloaded it, and re-run my usual floating-point intensive code. It is a simple Gibbs sampling MCMC scheme, described in the previous post. This code took 55 seconds to run on my netbook, but running with the OpenJDK JVM took over an hour to run on the Pi. Using the new Java 8 JVM from Oracle, on my Raspbian Pi overclocked to “High”, the code takes around 2 minutes 40 seconds. In other words, it is over 20 times quicker than the OpenJDK JVM. This is within a factor of 3 of my netbook, which is about as good as I could have hoped for. The C version of this code (described here) now runs in around 1 minute 48 seconds on the Pi, so the Java version is actually well within a factor of 2 of native code for this problem, which is pretty awesome! So Java on the Pi is suddenly looking much, much better, even for floating-point intensive codes. In some ways it is a bit of a shame that it is necessary to use a proprietry JVM in order to get good performance, but for now at least, it seems to be worth it.

 

Advertisements

Published by

darrenjw

I am Professor of Stochastic Modelling within the School of Mathematics & Statistics at Newcastle University, UK. I am also a computational systems biologist.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s