1. ukiuni@github

    Posted

    ukiuni@github
Changes in title
+2017年末において、Oracle JDK と OpenJDKに性能差はあるのか?
Changes in tags
Changes in body
Source | HTML | Preview
@@ -0,0 +1,120 @@
+過去も、Oracle JDKとOpenJDKを比較する記事は多々ありました。
+当時も両者はだいたい一緒だし、「将来的に両者の差分はなくなる」とした[資料(PDF)](http://ossipedia.ipa.go.jp/nfs/pdf_pub/1007/208/671/671.pdf)もありました。
+また、CPU アーキテクチャの違い、つまりIntelとARM上での性能差を示す[こんな記事](https://blogs.oracle.com/jtc/comparing-linuxarm-jvms-revisited)が過去にはありました。
+そして、2017年も末、[様々な動き](https://blogs.oracle.com/java-platform-group/faster-and-easier-use-and-redistribution-of-java-se)がOracle JDK とOpenJDKにあります。
+
+さて、今日においても、Oracle JDK とOpenJDKに、性能の差はあるのでしょうか?
+
+検証してみます。コードは[こちら](https://github.com/ukiuni/easyrest/tree/measure)です。
+Spring BootによるRest API アプリケーションで、テストコードでデータを1000回CRUD(作成して、参照して、変更して、削除)しています。
+Oracle OpenJDKそれぞれ5回、系10回ぐらい計測してみます。
+使用するJDKは1.8.0_152、
+Oracleは[こちら](http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html)から、OpenJDKは[こちら](https://zulu.org/download/)から入手します。
+
+# Mac
+手始めにMacで実行します。
+
+```
+MacBook Pro (Retina, 13-inch, Late 2012)
+プロセッサ 2.9 GHz Intel Core i7
+メモリ 8 GB 1600 MHz DDR3
+```
+
+ログの抜粋です。
+Azul Systems, Inc. がOpenJDKです。
+
+```
+# 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
+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
+```
+
+有意差はないように見えます。
+
+# 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の方が早い!
+
+
+# ARM 64
+[PINE64](https://www.pine64.org/?page_id=1194) という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を使っていれば、サーバの台数を大幅に削ることができ、費用面で優位になることが考えられます。
+どうでしょう?この際、開発環境と本番環境、すべてのJavaランタイムをOpenJDKで併せてみては!