With the release of JRuby 1.1RC1 I’ve run a new set of LogWatchR performance tests. This time, I’ve only run a set of 1.0 and 1.1 versions of JRuby. If you’re really interested in seeing more about 1.8 and 1.9 performance, you can always go look at my older post on the topic.
As a bit of clarification up front, this test measures the execution time of a simple minded log analysis tool I wrote/use against a 20 minute sample of syslog output. Contrary to the common assumption, this is not an IO bound process (see here for further details). I’m running this test with the following flags through 1.1b1:
JAVA_OPTS="-Djruby.objectspace.enabled=false \ -Djruby.jit.enabled=true -server" jruby -C
Version 1.1RC1 says that jruby.jit.enabled=true is no longer valid, so I’m usingthis instead:
JAVA_OPTS="-Djruby.objectspace.enabled=false \ -Djruby.compile.mode=JIT -server" jruby -C
Time (in secs)
It looks like the JRuby team is continuing to do great things with performance. This build is a 27% improvement over the 1.0.2 release and an 18% improvement over the first 1.1 beta.
I’m not a JRuby or Java performance geek, so if anyone on the team would like to lend me some performance enhancing clues I’d be happy rerun the tests.
UPDATE: Based on Charles comments below, I've now tried this with:
- +C, which compiles every method
- -C, which turns off compilation
- the default compilation (no C switch at all) which will compile any method called more than 20 times