Actually now that I look at it, this isn't all that solid performance. It's just *slightly* faster than using JRuby's inline cache, which almost never inlines...
Inline cache only, via CachingCallSite. ~/projects/jruby ➔ jruby -Xcompile.invokedynamic=false --server bench/bench_fib_recursive.rb 5 359227465 1.230000 0.000000 1.230000 ( 1.114000) 9227465 1.024000 0.000000 1.024000 ( 1.024000) 9227465 1.016000 0.000000 1.016000 ( 1.016000) 9227465 0.993000 0.000000 0.993000 ( 0.993000) 9227465 1.003000 0.000000 1.003000 ( 1.003000) So invokedynamic dispatch is better, but only by a tiny margin. :( I'll start browsing logs and asm dumps later today to see if I can figure out why it's not as fast as before. - Charlie On Wed, May 25, 2011 at 12:00 PM, Charles Oliver Nutter <head...@headius.com> wrote: > On Wed, May 25, 2011 at 11:31 AM, Charles Oliver Nutter > <head...@headius.com> wrote: >> Build in progress! I'll let you know how it goes. How low is low in "low >> arity"? > > Ok, we're definitely back to having solid performance, but it's not as > good as it was before. I'm not sure if it's related to the inlining > thresholds, since bumping them up the same way we used to doesn't get > all the perf back. Here's the numbers I have. It's now around 3x > faster than it was a few days ago, but not as fast as JRuby's dynopt > mode (which inserts a guarded invokevirtual next to a normal IC hit). > The invokedynamic logic was nearly as fast as dynopt before, which was > breathtaking to behold. > > Indy, indy with thresholds bumped, dynopt: > > ~/projects/jruby ➔ jruby --server bench/bench_fib_recursive.rb 5 359227465 > 1.215000 0.000000 1.215000 ( 1.155000) > 9227465 > 0.985000 0.000000 0.985000 ( 0.985000) > 9227465 > 0.977000 0.000000 0.977000 ( 0.977000) > 9227465 > 0.981000 0.000000 0.981000 ( 0.981000) > 9227465 > 0.976000 0.000000 0.976000 ( 0.976000) > > ~/projects/jruby ➔ jruby -J-XX:MaxInlineSize=150 > -J-XX:InlineSmallCode=3000 --server bench/bench_fib_recursive.rb 5 35 > 9227465 > 1.209000 0.000000 1.209000 ( 1.132000) > 9227465 > 0.981000 0.000000 0.981000 ( 0.981000) > 9227465 > 0.974000 0.000000 0.974000 ( 0.974000) > 9227465 > 0.971000 0.000000 0.971000 ( 0.971000) > 9227465 > 0.969000 0.000000 0.969000 ( 0.969000) > > ~/projects/jruby ➔ jruby -Xcompile.dynopt=true > -Xcompile.invokedynamic=false --server bench/bench_fib_recursive.rb 5 > 35 > 9227465 > 1.078000 0.000000 1.078000 ( 1.013000) > 9227465 > 0.706000 0.000000 0.706000 ( 0.706000) > 9227465 > 0.697000 0.000000 0.697000 ( 0.697000) > 9227465 > 0.699000 0.000000 0.699000 ( 0.699000) > 9227465 > 0.695000 0.000000 0.695000 ( 0.695000) > _______________________________________________ mlvm-dev mailing list mlvm-dev@openjdk.java.net http://mail.openjdk.java.net/mailman/listinfo/mlvm-dev