Wednesday Aug 24, 2011

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

Wednesday Apr 07, 2010

JSR 292 SPARC C1 and C2 support

I just pushed the SPARC C1 and C2 patches to support JSR 292 to the MLVM repository.  I've tested both thoroughly with JRuby's tests and benchmarks and both work pretty good.  Although I know of one bug in C1 this can be treated as the final versions and I'll start the first review round soon to get them into JDK 7 builds.

About

Random posts from a HotSpot engineer.

Search

Archives
« April 2014
SunMonTueWedThuFriSat
  
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
   
       
Today