(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.
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.
-mx512m`` -ms512m
[^ jvmoption]-server
[^ server][^ 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 ...
Le traitement étant divisé en deux parties, l'axe du graphique est séparé pour chaque traitement.
Voici les résultats expérimentaux.
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 |
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.
** Augmentez simplement la version Java et votre programme sera plus rapide. ** **
Recommended Posts