Significant indy slowdown on JRuby + redblack bench

Charles Oliver Nutter headius at headius.com
Wed Feb 23 07:03:35 PST 2011


Is it useful for me to continue posting these, or should I just keep
them to myself for now? It's also possible to run many JRuby
benchmarks from our repository's bench/ dir.

I've been looking at a red/black tree impl and benchmark recently on
JRuby. With stock JRuby settings, it performs around 30% better than
Ruby 1.9, but about 2x slower than Rubinius. The overhead seems to be
largely allocation-related; many objects are created, along with many
Ruby instance variable tables (Object[]). A five-iteration run
triggers a full GC 2-3 times for me.

You can get the benchmark like this:

git clone git://gist.github.com/44301.git redblack

When running with invokedynamic, however, the performance is at least
an order of magnitude worse. Using stock JRuby, iterations warm up to
around 3s on my machine. Running with invokedynamic they are in the
neighborhood of 35s.

Note that this is a build from over a week ago based on bsd-port and
mlvm repos at that time, so Christian's recent fixes for recursive
invocations are not included.

- Charlie


More information about the mlvm-dev mailing list