[JAVA] Gibt es Ende 2017 einen Leistungsunterschied zwischen Oracle JDK und OpenJDK?

In der Vergangenheit gab es viele Artikel, in denen Oracle JDK und Open JDK verglichen wurden. Selbst zu dieser Zeit waren die beiden fast gleich und "der Unterschied zwischen den beiden wird in Zukunft verschwinden" Material (PDF) Es gab auch .pdf). In der Vergangenheit gab es auch einen Artikel wie diesen, der den Unterschied in der CPU-Architektur, dh den Unterschied in der Leistung zwischen Intel und ARM, zeigt. Ende 2017 wurde Verschiedene Bewegungen als Oracle JDK veröffentlicht. Und im OpenJDK.

Gibt es übrigens auch heute noch einen Leistungsunterschied zwischen Oracle JDK und OpenJDK?

Ich werde es überprüfen. Der Code lautet hier. Eine Rest-API-Anwendung mit Spring Boot, die Daten 1000 Mal im Testcode CRUDs (erstellt, durchsucht, ändert, löscht). Ich werde Oracle OpenJDK jeweils 5 Mal und 10 Mal für das System messen. Die verwendete Version von JDK ist 1.8.0_152, Oracle ist hier, OpenJDK ist hier ) Es bekommen.

Mac Führen Sie es auf Ihrem Mac aus, um loszulegen.

MacBook Pro (Retina, 13-inch, Late 2012)
Prozessor 2.9 GHz Intel Core i7
Speicher 8 GB 1600 MHz DDR3

Auszug aus dem Protokoll. Azul Systems, Inc. ist das OpenJDK. Insgesamt ist dies der Durchschnitt der Zeit, die benötigt wurde, um alle Fälle abzuschließen, und der Zeit, die durchschnittlich benötigt wurde, um eine CRUD abzuschließen. Da es in mehreren Threads ausgeführt wird, beträgt der Durchschnitt * 1000 ≠ die Zeit, die zum Abschließen aller Datensätze benötigt wurde.

# 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

Oh, ich sehe keinen signifikanten Unterschied.

Linux x64 Ich habe CentOS mit Virtual Box auf dem oben genannten Mac gestartet und mit CPU 2, Mem 2048 ausgeführt.

# 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

Ebenso wird kein signifikanter Unterschied gefunden.

Windows x64 Ich habe es auch unter Windows 10 auf Mac versucht.

# 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

Es sieht so aus, als gäbe es keinen signifikanten Unterschied.

Linux ARM 32 Ich habe es auf Raspberry Pi2 B ausgeführt.

# 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

Oh! Es gibt einen Unterschied! Etwa 10% schneller mit dem Oracke JDK!

Linux ARM 64 Ich habe es auf einem ARM-Einplatinencomputer namens PINE64 versucht.

# 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

ohhhhhhhh! Es gibt einen erheblichen Unterschied! OpenJDK ist ungefähr 40% schneller! Es ist wunderbar.

Zusammenfassung

Bis Ende 2017 gab es unter Intel keinen signifikanten Leistungsunterschied zwischen Mac, Linux und Windows. Bei ARM wurde jedoch ein Unterschied beobachtet, und das Ergebnis war, dass OpenJDK eine um 40% bessere Leistung aufwies, insbesondere bei 64 Bit. Von nun an ist es sehr wahrscheinlich, dass ARM, das der Energieeinsparung überlegen ist, für Serveranwendungen verwendet wird. Wenn Sie zu diesem Zeitpunkt OpenJDK verwenden, können Sie die Anzahl der Server erheblich reduzieren, was hinsichtlich der Kosten von Vorteil sein kann. Ist es nicht möglich, das OpenJDK für die Entwicklung zu verwenden, da es keinen Leistungsunterschied zwischen den JDKs für jede Umgebung gibt? Wie ist das? Versuchen Sie zu diesem Zeitpunkt, OpenJDK für die Entwicklungsumgebung, die Produktionsumgebung und alle Java-Laufzeiten zu verwenden!

Recommended Posts

Gibt es Ende 2017 einen Leistungsunterschied zwischen Oracle JDK und OpenJDK?
Was ist der Unterschied zwischen einem Webserver und einem Anwendungsserver?
Was ist der Unterschied zwischen SimpleDateFormat und DateTimeFormatter? ??
Was ist der Unterschied zwischen Systemspezifikation und Funktionsspezifikation?
[Rails] Was ist der Unterschied zwischen Redirect und Rendering?
[JAVA] Was ist der Unterschied zwischen Schnittstelle und Zusammenfassung? ?? ??
Was ist der Unterschied zwischen Überspringen und Ausstehend? [RSpec]
Verstehe in 3 Minuten! Eine sehr grobe Erklärung des Unterschieds zwischen Sitzung und Cookie
[Rails] Was ist der Unterschied zwischen Bundle-Installation und Bundle-Update?
Was ist der Unterschied zwischen einer Aktion und einer Instanzmethode?
Warum einen Zeilenumbruch am Ende der Datei einfügen?
Was ist der Unterschied zwischen den Verantwortlichkeiten der Domänenschicht und der Anwendungsschicht in der Zwiebelarchitektur [DDD]?
Dies und das von JDK
[Java] Was ist der Unterschied zwischen Form, Entität und dto? [Bohne]
[Rails] Unterschied im Verhalten zwischen Delegat und has_many-through bei Eins-zu-Eins-zu-Viele
Der Inhalt des Rückgabewerts von executeBatch unterscheidet sich zwischen 11g und 12c
Es gibt einen Programmierer zum Kopieren / Einfügen, der jemanden ansieht und mich ansieht
Lassen Sie uns eine grobe Vorstellung von den Unterschieden zwischen Protokollen, Klassen und Strukturen bekommen!
Ein Blick auf Jenkins, OpenJDK 8 und Java 11
Gibt es eine numerische Version von include?
Unterschied zwischen isEmpty und isBlank von StringUtils
Über den Unterschied zwischen irb und pry
Finden Sie den Unterschied von einem Vielfachen von 10
[Java] Unterschied zwischen gleich und == in einer Zeichenfolge, die ein Referenztyp ist
[Oracle Cloud] Installieren Sie das kostenlose Oracle JDK 11 (LTS) auf einer virtuellen Instanz von OCI
Lassen Sie uns den Unterschied zwischen Interpreter und Compiler anhand des Ben-Diagramms erklären
Zeigt an, wie viele Jahre und Monate der Unterschied zu einem bestimmten Datum beträgt
[Java] Verstehe den Unterschied zwischen List und Set
Überprüfen Sie die installierte und aktivierte JDK-Version
[Rails / Active Record] Über den Unterschied zwischen create und create!
Verstehe den Unterschied zwischen abstrakten Klassen und Schnittstellen!
Unterschied zwischen Mitglied und Sammlung von Schienen route.rb
Das Ende der katastrophalen Programmierung # 03 "Der Vergleich von ganzen Zahlen, wenn" a> b ", nimmt an, dass es" a - b> 0 "ist."
[Ruby] Ich habe über den Unterschied zwischen each_with_index und each.with_index nachgedacht
[Rails] Ich habe den Unterschied zwischen Ressourcen und Ressourcen untersucht
Der Vergleich von enum ist == und gleich ist gut [Java]
Unterschiede zwischen Klassen und Instanzen in Ruby
Berechnen Sie die Differenz zwischen Zahlen in einem Ruby-Array
Das Verhalten unterscheidet sich zwischen new und clear () von ArrayList
Vergleichen Sie den Unterschied zwischen Docker-Datei vor und nach Docker-Slim
Überprüfung der Beziehung zwischen dem Docker-Image und dem Container
[Swift] UITextField hat mir den Unterschied zwischen Null und "" beigebracht.
Ich werde den Unterschied zwischen der Entwicklung von Android-Anwendungen und der Entwicklung von iOS-Anwendungen aus der Sicht von iOS-Ingenieuren erläutern
Jetzt im dritten Jahr ist das Missverständnis, das ich bemerkt habe, der Unterschied zwischen der Gleichheitsmethode und ==