Le programme sera-t-il plus rapide simplement en augmentant la version Java?

(Cet article est un article multiple avec Go to the Horizon)

J'entends souvent que l'augmentation de la version en cours d'exécution de Java le rend plus rapide. Mais est-ce vraiment le cas? Et à quelle vitesse serait-ce si c'était vrai?

J'ai donc expérimenté un programme simple.

Aperçu de l'expérience

Pour l'expérience, j'ai créé programme Java pour résoudre les mathématiques. Puisque ce programme ne répète que des opérations simples, la tendance est probablement différente de celle d'un programme compliqué comme une application Web, mais je pense que ce sera un niveau de référence.

Compilez-le avec ** Java 1.1 ** et ** avec chaque JDK Oracle (32 bits / 64 bits) de Java 1.1 à 12 ** [ensemble de données de 1 million de questions en allemand](https: //www.kaggle) .com / bryanpark / sudoku / version / 3) a été lu et le temps nécessaire pour terminer la solution a été mesuré. [^ compile] **

[^ compile]: Comme il est rétrocompatible, les fichiers de classe compilés avec Java 1.1 continueront à fonctionner dans les versions ultérieures.

Les conditions de mesure détaillées sont les suivantes.

[^ jvmoption]: Vous pourriez penser, "N'est-ce pas -Xmx`` -Xms? ", mais dans Java 1.1 cette option est -mx`` -ms. Dans Java 1.2, l'option VM a été remplacée par l'option VM -Xmx`` -Xms, mais vous pouvez toujours utiliser -mx`` -ms. [^ server]: Sans cette option, la VM HotSpot Client serait utilisée, ce qui serait environ deux fois plus lent ...

Résultat expérimental

Le traitement étant divisé en deux parties, l'axe du graphique est séparé pour chaque traitement.

Voici les résultats expérimentaux. 処理時間(ms)

Données originales du graphique ...
Java Version Lecture des données(ms) Analyse numérique(ms) total(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

Considération

L'hypothèse est «dans ce programme», mais ce qui suit peut être vu à partir des données.

[^ cms]: ramasse-miettes Mark Sweep simultané. Pour plus d'informations sur ce GC, voir Matériel de KUBOTA Yuji.

Résumé

** Augmentez simplement la version Java et votre programme sera plus rapide. ** **

Recommended Posts

Le programme sera-t-il plus rapide simplement en augmentant la version Java?
Changer la version de java installée par SDKMAN lors du déplacement de répertoires
[Édition Java] Histoire de la sérialisation
Obtenez le résultat de POST en Java
[Java] Obtenez le jour d'un jour spécifique
[Java] Comment obtenir le répertoire actuel
Comment obtenir la date avec Java
L'histoire reçue par Java SE11 silver
[Java] Rendez le programme 10 fois plus rapide avec parallelStream
[Java8] Recherchez le répertoire et récupérez le fichier
[Java] Obtenez la date avec la classe LocalDateTime
Je suis tombé sur la version Java dans Android Studio, je vais donc le résumer