LoginSignup
26
22

More than 5 years have passed since last update.

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

Last updated at Posted at 2017-11-23

過去も、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で併せてみては!

26
22
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
26
22