Bonjour,
je voudrais essayer de calculer le temps d'exécution d'une méthode est il possible de le faire en java ?
Cordialement
Bonjour,
je voudrais essayer de calculer le temps d'exécution d'une méthode est il possible de le faire en java ?
Cordialement
Un moyen simple est d'utiliser la méthode currentTimeMillis ou nanoTime de la classe System et faire simplement une différence. Sinon, tu peux aussi utiliser des outils de monitoring comme HPROF (utilisable via un argument dans le lancement de la JVM). http://java.sun.com/developer/techni...ing/HPROF.html
C'est intéressant pour optimiser ses algorithmes.
Avec CurrentTimeMillis avec deux exécution sa donne 2 résultats différents!!!
Bien sur! C'est le principe même!
Tu fais un currentTimeMillis en début de l'opération a mesurer et tu met le résultat dans une variable. A la fin du traitement tu fais la différence entre un nouveau currentTimeMillis et la valeur sauvegardée pour obtenir le temps en ms.
Je pense qu'il voulait dire qu'il a testé deux fois son application et qu'il a obtenu des résultats sensiblement différents.
Attention pour le calcul des très petites valeurs (genre une fonction qui ne prend qu'une milliseconde): currentTimeMillis ou nanoTime ne sont pas forcément précis à la milliseconde (respectivement la nanoseconde) près.
Dans certains cas, tu peux même avoir des imprécisions de l'ordre de 15msec.
C'est pourquoi il est en règle générale préférable de faire des tests de performance avec les outils prévus pour (comme Hprof, mais également avec les outils intégrés dans certains IDE: c'est le cas avec NetBeans ; j'imagine que l'équivalent doit exister sur Eclipse).
L'autre possibilité pour réduire les imprécisions est de mesurer le temps pris par l'exécution de la fonction non pas pour une exécution, mais pour 1000 exécutions à la suite (dans une boucle). Tu n'as ensuite plus qu'à diviser le delta de temps obtenu entre le début et la fin de la boucle par 1000.
Partager