(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.
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.
-mx512m`` -ms512m
[^ jvmoption]-server
[^ server] hinzu[^ 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 ...
Da die Verarbeitung in zwei Teile unterteilt ist, wird die Diagrammachse für jede Verarbeitung getrennt.
Hier sind die experimentellen Ergebnisse.
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 |
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.
** Erhöhen Sie einfach die Java-Version und Ihr Programm wird schneller. ** **.
Recommended Posts