Duplicate possible:
Comment chronométrer l'exécution d'une méthode en Java?
J'ai écrit un programme et je souhaite maintenant calculer le temps total d'exécution de mon programme du début à la fin.
Comment puis-je faire ceci?
Utilisez System.nanoTime pour obtenir l'heure actuelle.
long startTime = System.nanoTime();
.....your program....
long endTime = System.nanoTime();
long totalTime = endTime - startTime;
System.out.println(totalTime);
Le code ci-dessus imprime la durée d'exécution du programme en nanosecondes.
Au début de votre méthode principale, ajoutez cette ligne de code:
final long startTime = System.nanoTime();
Et puis, à la dernière ligne de votre méthode principale, vous pouvez ajouter:
final long duration = System.nanoTime() - startTime;
duration
contient maintenant le temps en nanosecondes que votre programme a exécuté. Vous pouvez par exemple imprimer cette valeur comme ceci:
System.out.println(duration);
Si vous souhaitez afficher la durée en secondes, vous devez diviser la valeur par 1'000'000'000. Ou si vous voulez un objet Date
: Date myTime = new Date(duration / 1000);
Vous pouvez ensuite accéder aux différentes méthodes de Date
pour imprimer le nombre de minutes, d'heures, etc.
Utilisez System . currentTimeMillis () ou System . nanoTime () si vous souhaitez une lecture encore plus précise. Généralement, les millisecondes sont suffisamment précises si vous devez afficher la valeur à l'utilisateur. De plus, System.nanoTime()
peut renvoyer des valeurs négatives. Il est donc possible que, si vous utilisez cette méthode, la valeur renvoyée ne soit pas correct.
Une utilisation générale et large consisterait à utiliser des millisecondes:
long start = System.currentTimeMillis();
...
long end = System.currentTimeMillis();
NumberFormat formatter = new DecimalFormat("#0.00000");
System.out.print("Execution time is " + formatter.format((end - start) / 1000d) + " seconds");
Notez que les nanosecondes sont généralement utilisées pour calculer des exécutions de programme très courtes et précises, telles que des tests unitaires et des analyses comparatives. Ainsi, pour l'exécution globale du programme, les millisecondes sont préférables.
L’approche générale consiste à:
main()
.main()
.Un indice: regardez System.nanoTime()
ou System.currentTimeMillis()
.
Vous devez connaître l'heure de démarrage de l'application et la comparer à l'heure de fin de l'application.
Quand l'application démarre:
Calendar calendar = Calendar.getInstance();
// Get start time (this needs to be a global variable).
Date startDate = calendar.getTime();
Quand l'application se termine
Calendar calendar = Calendar.getInstance();
// Get start time (this needs to be a global variable).
Date endDate = calendar.getTime();
Pour obtenir la différence (en millisecondes), procédez comme suit:
long sumDate = endDate.getTime() - startDate.getTime();
Outre les fonctions connues (et déjà mentionnées) System.currentTimeMillis()
et System.nanoTime()
, il existe également une bibliothèque ordonnée appelée perf4j , qui peut également être utile, selon votre objectif.