1. ukiuni@github

    No comment

    ukiuni@github
Changes in body
Source | HTML | Preview
@@ -1,120 +1,121 @@
過去も、Oracle JDKとOpenJDKを比較する記事は多々ありました。
-当時も両者はだいたい一緒だし「将来的に両者の差分はなくなる」とした[資料(PDF)](http://ossipedia.ipa.go.jp/nfs/pdf_pub/1007/208/671/671.pdf)もありました。
+当時も両者はだいたい一緒だし「将来的に両者の差分はなくなる」とした[資料(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に、性能の差はあるのでしょうか?
+さて、今日においても 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、
+使用する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です。
+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](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を使っていれば、サーバの台数を大幅に削ることができ、費用面で優位になることが考えられます。
+これから、省電力性にまさるARMがサーバ用途で使われていくことは大いに考えられます。その際にOpenJDKを使っていれば、サーバの台数を大幅に削ることができ、費用面で優位になることが考えられます。更には各環境用のJDKには性能差異がないので、開発でもOpenJDKを使うことが可能ではないでしょうか?
どうでしょう?この際、開発環境と本番環境、すべてのJavaランタイムをOpenJDKで併せてみては!