OpenJ9 とか言うものが Java 9 と同時にリリースされてたのでちょっと気になってた。
トップページに以下のような文言が。
Boost your Java application performance
Low memory footprint. Fast start-up time. High application throughput.
Optimized to run Java applications cost-effectively in the cloud.
Want an OpenJDK build that contains an enterprise grade, open source, Java virtual machine?
Grab a pre-built binary and try it for yourself...
処理が早いのか?JVMより起動が早いのか?メモリ使用量が少ないのか?
などなど気になりますが、とりあえず処理速度の面で見てみます。
免責
仕事の息抜きにスーパー雑にやっただけなので、ちゃんとした詳細なベンチは他の方のを御覧ください。
環境
- Vagrant 1.9.1
- 使用Box: ubuntu/xenial64
- 3つの仮想環境にそれぞれ JDK8 / JDK9 / JDK9+OpenJ9 をインストール
コード
import java.math.*;
public class test {
final static int LOOP_COUNT = 1_000_000_000;
public static void main(String[] args) {
BigInteger bi = BigInteger.ZERO;
for(int i = 0; i < LOOP_COUNT; i++) {
BigInteger _bi = BigInteger.valueOf(i);
bi = bi.add(_bi);
}
System.out.println(bi);
}
}
10億回ループして足すだけの目も当てられない雑なコード。
計測方法
javac test.java
time java test
雑な計測。
結果
JDK8
$ time java test
499999999500000000
real 0m31.215s
user 0m22.668s
sys 0m7.332s
JDK9
$ time java test
499999999500000000
real 0m24.734s
user 0m18.532s
sys 0m4.936s
JDK9 + OpenJ9
$ time java test
499999999500000000
real 0m54.416s
user 0m48.192s
sys 0m4.500s
「あれ、なんか間違えたかな…」って気分になりました。
メモリ使用量は Minecraft の JVM として使ってみると実感できるかも?(適当)