24 Aug 2011 twisti   » (Master)

Latest JSR 292 performance work

It's been a long time since my last post (over a year) and in the meantime we have released JDK 7 with JSR 292 support.  Right now I'm working on JSR 292 performance and which should be included in the next JDK 7 update (7u) release.

I just sent out an email to the mlvm-dev mailing list with some JRuby performance numbers for:

7079673: JSR 292: C1 should inline bytecoded method handle adapters

I paste them here again for convenience.

intelsdv07:~/mlvm/jruby$ jruby -J-showversion --client bench/bench_fib_complex.rb 5 35
java version "1.7.0"
Java(TM) SE Runtime Environment (build 1.7.0-b147)
Java HotSpot(TM) Client VM (build 21.0-b17, mixed mode)

normal fib
11.765000   0.000000  11.765000 ( 11.748000)
11.765000   0.000000  11.765000 ( 11.765000)
11.746000   0.000000  11.746000 ( 11.746000)
11.745000   0.000000  11.745000 ( 11.745000)
11.702000   0.000000  11.702000 ( 11.702000)
fib with constants
14.879000   0.000000  14.879000 ( 14.879000)
14.912000   0.000000  14.912000 ( 14.912000)
15.255000   0.000000  15.255000 ( 15.255000)
15.168000   0.000000  15.168000 ( 15.169000)
15.320000   0.000000  15.320000 ( 15.320000)
fib with additional calls
25.799000   0.000000  25.799000 ( 25.798000)
25.705000   0.000000  25.705000 ( 25.705000)
26.044000   0.000000  26.044000 ( 26.044000)
26.028000   0.000000  26.028000 ( 26.028000)
26.351000   0.000000  26.351000 ( 26.351000)
fib with constants and additional calls
25.053000   0.000000  25.053000 ( 25.053000)
24.406000   0.000000  24.406000 ( 24.406000)
24.550000   0.000000  24.550000 ( 24.550000)
24.478000   0.000000  24.478000 ( 24.478000)
24.381000   0.000000  24.381000 ( 24.381000)

intelsdv07:~/mlvm/jruby$ jruby -J-showversion --client -Xcompile.invokedynamic=false bench/bench_fib_complex.rb 5 35
java version "1.7.0"
Java(TM) SE Runtime Environment (build 1.7.0-b147)
Java HotSpot(TM) Client VM (build 21.0-b17, mixed mode)

normal fib
 1.778000   0.000000   1.778000 (  1.724000)
 1.740000   0.000000   1.740000 (  1.740000)
 1.734000   0.000000   1.734000 (  1.734000)
 1.735000   0.000000   1.735000 (  1.736000)
 1.745000   0.000000   1.745000 (  1.745000)
fib with constants
 3.420000   0.000000   3.420000 (  3.420000)
 3.379000   0.000000   3.379000 (  3.379000)
 3.387000   0.000000   3.387000 (  3.387000)
 3.398000   0.000000   3.398000 (  3.398000)
 3.389000   0.000000   3.389000 (  3.389000)
fib with additional calls
 2.953000   0.000000   2.953000 (  2.953000)
 2.973000   0.000000   2.973000 (  2.973000)
 2.974000   0.000000   2.974000 (  2.974000)
 2.977000   0.000000   2.977000 (  2.977000)
 2.979000   0.000000   2.979000 (  2.979000)
fib with constants and additional calls
 4.290000   0.000000   4.290000 (  4.290000)
 4.222000   0.000000   4.222000 (  4.222000)
 4.221000   0.000000   4.221000 (  4.222000)
 4.223000   0.000000   4.223000 (  4.223000)
 4.222000   0.000000   4.222000 (  4.221000)

intelsdv07:~/mlvm/jruby$ jruby -J-showversion --client bench/bench_fib_complex.rb 5 35
java version "1.8.0-ea"
Java(TM) SE Runtime Environment (build 1.8.0-ea-b01)
Java HotSpot(TM) Client VM (build 22.0-b01-internal, mixed mode)

normal fib
 1.072000   0.000000   1.072000 (  1.056000)
 1.059000   0.000000   1.059000 (  1.059000)
 1.042000   0.000000   1.042000 (  1.042000)
 1.043000   0.000000   1.043000 (  1.044000)
 1.048000   0.000000   1.048000 (  1.049000)
fib with constants
 3.178000   0.000000   3.178000 (  3.179000)
 3.036000   0.000000   3.036000 (  3.036000)
 3.056000   0.000000   3.056000 (  3.056000)
 3.052000   0.000000   3.052000 (  3.052000)
 3.052000   0.000000   3.052000 (  3.052000)
fib with additional calls
 1.698000   0.000000   1.698000 (  1.698000)
 1.677000   0.000000   1.677000 (  1.677000)
 1.677000   0.000000   1.677000 (  1.677000)
 1.678000   0.000000   1.678000 (  1.678000)
 1.680000   0.000000   1.680000 (  1.680000)
fib with constants and additional calls
 3.483000   0.000000   3.483000 (  3.483000)
 3.501000   0.000000   3.501000 (  3.501000)
 3.496000   0.000000   3.496000 (  3.496000)
 3.498000   0.000000   3.498000 (  3.498000)
 3.530000   0.000000   3.530000 (  3.530000)

And here are some numbers for the Red Black Tree benchmark:

intelsdv07:~/mlvm/redblack$ jruby -J-showversion --client bm1.rb
java version "1.7.0"
Java(TM) SE Runtime Environment (build 1.7.0-b147)
Java HotSpot(TM) Client VM (build 21.0-b17, mixed mode)

18.136
17.942
17.969
17.783
17.916

intelsdv07:~/mlvm/redblack$ jruby -J-showversion --client -Xcompile.invokedynamic=false bm1.rb
java version "1.7.0"
Java(TM) SE Runtime Environment (build 1.7.0-b147)
Java HotSpot(TM) Client VM (build 21.0-b17, mixed mode)

2.791
2.563
2.587
2.568
2.628

intelsdv07:~/mlvm/redblack$ jruby -J-showversion --client bm1.rb
java version "1.8.0-ea"
Java(TM) SE Runtime Environment (build 1.8.0-ea-b01)
Java HotSpot(TM) Client VM (build 22.0-b01-internal, mixed mode)

3.998
2.278
2.25
2.204
2.193

Syndicated 2011-08-24 14:13:18 from twisti's weblog

Latest blog entries     Older blog entries

New Advogato Features

New HTML Parser: The long-awaited libxml2 based HTML parser code is live. It needs further work but already handles most markup better than the original parser.

Keep up with the latest Advogato features by reading the Advogato status blog.

If you're a C programmer with some spare time, take a look at the mod_virgule project page and help us with one of the tasks on the ToDo list!