Wird das Programm nur durch Erhöhen der Java-Version schneller?

(Dieser Artikel ist ein Multi-Post mit Go to the Horizon)

Ich höre oft, dass das Erhöhen der laufenden Version von Java es schneller macht. Aber ist das wirklich der Fall? Und wie schnell wäre es, wenn es wahr wäre?

Also habe ich mit einem einfachen Programm experimentiert.

Überblick über das Experiment

Für das Experiment habe ich [Java-Programm zur Lösung von Mathematik] erstellt (https://github.com/YujiSoftware/Sudoku/tree/jdk1.1). Da dieses Programm nur einfache Operationen wiederholt, hat es wahrscheinlich eine andere Tendenz als komplexe Programme wie Webanwendungen, aber ich denke, es kann als Referenz verwendet werden.

Kompilieren Sie dies mit ** Java 1.1 ** und ** mit jedem Oracle JDK (32bit / 64bit) von Java 1.1 bis 12 ** (Datensatz mit 1 Million Fragen auf Deutsch) (https: //www.kaggle) .com / bryanpark / sudoku / version / 3) wurde gelesen und die Zeit bis zur Fertigstellung der Lösung gemessen. [^ kompilieren] **

[^ compile]: Da es abwärtskompatibel ist, funktionieren mit Java 1.1 kompilierte Klassendateien in späteren Versionen weiterhin.

Die detaillierten Messbedingungen sind wie folgt.

[^ jvmoption]: Sie könnten denken, "Ist das nicht" -Xmx "" -Xms "?", aber in Java 1.1 ist diese Option "-mx" -ms ". In Java 1.2 wurde die VM-Option in die VM-Option -Xmx`` -Xms geändert, Sie können jedoch weiterhin -mx`` -ms verwenden. [^ server]: Ohne diese Option wird die HotSpot Client-VM verwendet, die etwa doppelt so langsam ist ...

Versuchsergebnis

Da die Verarbeitung in zwei Teile unterteilt ist, wird die Diagrammachse für jede Verarbeitung getrennt.

Hier sind die experimentellen Ergebnisse. 処理時間(ms)

Originaldaten des Diagramms ...
Java Version Daten gelesen(ms) Zahlenanalyse(ms) gesamt(ms)
Java 1.1 (32bit) 1.1.8 8,313 4,231 12,544
Java 1.2 (32bit) 1.2.2_017 6,647 4,360 11,006
Java 1.3 (32bit) 1.3.0_05 10,747 6,905 17,652
Java 1.3.1 (32bit) 1.3.1_28 7,647 5,093 12,740
Java 1.4 (32bit) 1.4.0_04 8,061 4,741 12,802
Java 1.4.1 (32bit) 1.4.1_07 7,810 4,796 12,606
Java 1.4.2 (32bit) 1.4.2_19 3,437 3,281 6,717
Java 5 (32bit) 1.5.0_22 3,050 3,289 6,338
Java 6 (32bit) 1.6.0_45 3,530 4,077 7,607
Java 7 (32bit) 1.7.0_80 3,411 3,211 6,622
Java 8 (32bit) 1.8.0_202 3,239 3,257 6,496
Java 6 (64bit) 1.6.0_45 5,029 3,312 8,341
Java 7 (64bit) 1.7.0_80 7,019 3,148 10,167
Java 8 (64bit) 1.8.0_202 5,050 3,054 8,104
Java 9 (64bit) 9.0.4 2,101 2,961 5,061
Java 10 (64bit) 10.0.2 2,056 3,054 5,110
Java 11 (64bit) 11.0.3 1,922 3,343 5,265
Java 12 (64bit) 12.0.1 1,934 3,422 5,356

Erwägung

Die Annahme ist "in diesem Programm", aber das Folgende kann aus den Daten gesehen werden.

[^ cms]: Gleichzeitiger Mark Sweep Garbage Collector. Weitere Informationen zu diesem GC finden Sie unter KUBOTA Yujis Material.

Zusammenfassung

** Erhöhen Sie einfach die Java-Version und Ihr Programm wird schneller. ** **.

Recommended Posts

Wird das Programm nur durch Erhöhen der Java-Version schneller?
Wechseln Sie die von SDKMAN installierte Java-Version, wenn Sie Verzeichnisse verschieben
[Java Edition] Geschichte der Serialisierung
Holen Sie sich das Ergebnis von POST in Java
[Java] Ermittelt den Tag eines bestimmten Tages
[Java] So erhalten Sie das aktuelle Verzeichnis
So erhalten Sie das Datum mit Java
Die Geschichte von Java SE11 Silber erhalten
[Java] Machen Sie das Programm mit parallelStream 10x schneller
[Java8] Durchsuchen Sie das Verzeichnis und holen Sie sich die Datei
[Java] Ermitteln Sie das Datum mit der LocalDateTime-Klasse
Ich bin auf die Java-Version in Android Studio gestoßen, daher werde ich sie zusammenfassen