Help us understand the problem. What is going on with this article?

2017年末において、Oracle JDK と OpenJDKに性能差はあるのか?

More than 1 year has passed since last update.

過去も、Oracle JDKとOpenJDKを比較する記事は多々ありました。
当時も、両者はだいたい一緒だし「将来的に両者の差分はなくなる」とした資料(PDF)もありました。
また、CPU アーキテクチャの違い、つまりIntelとARM上での性能差を示すこんな記事が過去にはありました。
そして、2017年も末、様々な動きがOracle JDK とOpenJDKにあります。

さて、今日においても Oracle JDK とOpenJDKに、性能の差はあるのでしょうか?

検証してみます。コードはこちらです。
Spring BootによるRest API アプリケーションで、テストコードでデータを1000回CRUD(作成して、参照して、変更して、削除)しています。
Oracle OpenJDKそれぞれ5回、系10回ぐらい計測してみます。
使用するJDKのバージョンは1.8.0_152、
Oracleはこちらから、OpenJDKはこちらから入手します。

Mac

手始めにMacで実行します。

MacBook Pro (Retina, 13-inch, Late 2012)
プロセッサ 2.9 GHz Intel Core i7
メモリ 8 GB 1600 MHz DDR3

ログの抜粋です。
Azul Systems, Inc. がOpenJDKです。
totalで、全件完了までにかかった時間、avrが一回のCRUDにかかった時間の平均です。マルチスレッドで実行しているので、平均*1000≠全件完了までにかかった時間 となります。

# summary  :Oracle Corporation 1.8.0_152, total :  13093, avr :50.50707070707071
# summary  :Azul Systems, Inc. 1.8.0_152, total :  13219, avr :51.61749745676501
# summary  :Oracle Corporation 1.8.0_152, total :  14221, avr :55.51567239635996
# summary  :Azul Systems, Inc. 1.8.0_152, total :  14199, avr :55.383756345177666
# summary  :Oracle Corporation 1.8.0_152, total :  14041, avr :54.699195171026155
# summary  :Azul Systems, Inc. 1.8.0_152, total :  13726, avr :53.41538461538462
# summary  :Oracle Corporation 1.8.0_152, total :  14385, avr :56.066869300911854
# summary  :Azul Systems, Inc. 1.8.0_152, total :  12657, avr :49.50912778904665
# summary  :Oracle Corporation 1.8.0_152, total :  14370, avr :55.76200204290092
# summary  :Azul Systems, Inc. 1.8.0_152, total :  14021, avr :54.15415821501014

おお、有意差は見当たりませんね。

Linux x64

上記Macの上にVirtual BoxでCentOSを起動し、CPU 2,Mem 2048で動作させました。

# summary  :Oracle Corporation 1.8.0_152, total :  27041, avr :53.996
# summary  :Azul Systems, Inc. 1.8.0_152, total :  28390, avr :56.06406406406406
# summary  :Oracle Corporation 1.8.0_152, total :  27767, avr :54.964
# summary  :Azul Systems, Inc. 1.8.0_152, total :  27635, avr :54.878
# summary  :Oracle Corporation 1.8.0_152, total :  30113, avr :59.563
# summary  :Azul Systems, Inc. 1.8.0_152, total :  26138, avr :51.66466466466466
# summary  :Oracle Corporation 1.8.0_152, total :  28239, avr :55.88
# summary  :Azul Systems, Inc. 1.8.0_152, total :  27637, avr :55.074
# summary  :Oracle Corporation 1.8.0_152, total :  28477, avr :56.231
# summary  :Azul Systems, Inc. 1.8.0_152, total :  27685, avr :54.856

同じく有意差は見つかりません。

Windows x64

Mac上のWindows 10 で同様に動かしてみました。

# summary  :Oracle Corporation 1.8.0_152, total :  88932, avr :170.171
# summary  :Azul Systems, Inc. 1.8.0_152, total : 104348, avr :207.67
# summary  :Oracle Corporation 1.8.0_152, total :  89635, avr :179.223
# summary  :Azul Systems, Inc. 1.8.0_152, total :  92882, avr :179.815
# summary  :Oracle Corporation 1.8.0_152, total :  84967, avr :165.057
# summary  :Azul Systems, Inc. 1.8.0_152, total :  96394, avr :191.677
# summary  :Oracle Corporation 1.8.0_152, total :  87724, avr :174.424
# summary  :Azul Systems, Inc. 1.8.0_152, total :  83325, avr :164.012
# summary  :Oracle Corporation 1.8.0_152, total :  89018, avr :169.627
# summary  :Azul Systems, Inc. 1.8.0_152, total :  87105, avr :170.365

有意差はないように見えます。

Linux ARM 32

Raspberry Pi2 B上で動作させました。

# summary  :Oracle Corporation 1.8.0_152, total :  87153, avr :345.167
# summary  :Azul Systems, Inc. 1.8.0_152, total :  98166, avr :389.905
# summary  :Oracle Corporation 1.8.0_152, total :  86835, avr :345.236
# summary  :Azul Systems, Inc. 1.8.0_152, total : 101888, avr :405.66166166166164
# summary  :Oracle Corporation 1.8.0_152, total :  85945, avr :342.2522522522523
# summary  :Azul Systems, Inc. 1.8.0_152, total :  97561, avr :385.345
# summary  :Oracle Corporation 1.8.0_152, total :  87837, avr :345.8416833667335
# summary  :Azul Systems, Inc. 1.8.0_152, total :  97551, avr :385.878
# summary  :Oracle Corporation 1.8.0_152, total :  86338, avr :343.878
# summary  :Azul Systems, Inc. 1.8.0_152, total :  96303, avr :383.2995991983968

おお!差異がありますね!おおよそ10%ほどOracke JDKの方が早い!

Linux ARM 64

PINE64 というARMのシングルボードコンピュータ上で試してみました。

# summary  :Oracle Corporation 1.8.0_152, total : 125477, avr :500.5605605605606
# summary  :Azul Systems, Inc. 1.8.0_152, total :  67825, avr :267.8199195171026
# summary  :Oracle Corporation 1.8.0_152, total : 123450, avr :492.10854271356783
# summary  :Azul Systems, Inc. 1.8.0_152, total :  69810, avr :275.91691691691693
# summary  :Oracle Corporation 1.8.0_152, total : 129602, avr :517.0773092369478
# summary  :Azul Systems, Inc. 1.8.0_152, total :  67636, avr :265.72754793138245
# summary  :Oracle Corporation 1.8.0_152, total : 125981, avr :501.3711133400201
# summary  :Azul Systems, Inc. 1.8.0_152, total :  71870, avr :283.9637826961771
# summary  :Oracle Corporation 1.8.0_152, total : 127799, avr :507.6098294884654
# summary  :Azul Systems, Inc. 1.8.0_152, total :  69773, avr :275.34375

おおおおおお!相当の差異があります!OpenJDKの方が40%ほど早い!すごいですね。

まとめ

2017年末現在において、Intel上のMac,Linux,Windowsにおいて、優位な性能差は見られませんでした。
しかしながら、ARM上においては差異が認められ、とくに64bit上ではOpenJDKの方が40%も性能がよい、という結果が出ました。
これから、省電力性にまさるARMがサーバ用途で使われていくことは大いに考えられます。その際にOpenJDKを使っていれば、サーバの台数を大幅に削ることができ、費用面で優位になることが考えられます。更には各環境用のJDKには性能差異がないので、開発でもOpenJDKを使うことが可能ではないでしょうか?
どうでしょう?この際、開発環境と本番環境、すべてのJavaランタイムをOpenJDKで併せてみては!

ukiuni@github
投稿内容は私個人の意見であり、所属企業・部門とは関係ありません。
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした