I've been making more and more JRuby paths use invokedynamic, and
trying to get more of those to bind straight through with
methodhandles (rather than via our intermediate DynamicMethod class).
Most numbers are looking great...even some benchmarks against core
JRuby methods that are implemented in Java are faster (sometimes much
faster) when invoked via indy. Very exciting!

One case that's a lot slower, however, is this red/black tree benchmark:

https://github.com/headius/redblack

Without indy, it runs in around 2s after warmup. With indy, the best
it gets is 8-9s. Probably safe to say it's 3-5x slower.

Many call paths in JRuby still are not directly binding and go through
DynamicMethod. Those paths do have more overhead than they should, but
probably not more than CachingCallSite would introduce. So it seems
like there's either a bottleneck in indy itself or I'm doing something
wrong on my end.

I would test this against mlvm head, but as reported in my other email
there's an exception when building catchException handle adapters...

- Charlie
_______________________________________________
mlvm-dev mailing list
mlvm-dev@openjdk.java.net
http://mail.openjdk.java.net/mailman/listinfo/mlvm-dev

Reply via email to