Comment puis-je compter le temps nécessaire à une fonction à remplir dans Java?
J'ai besoin de mesurer le temps qu'il faut pour une fonction à remplir dans Java. Comment puis-je le faire?
Remarque:
Je veux mesurer le fonction's le temps de la consommation, pas que de la totalité du programme.
Vous devez vous connecter pour publier un commentaire.
Ici est de savoir comment calculer le temps écoulé.
L'utilisation d'un profiler.
Si vous utilisez la Goyave, l'utilisation de la
Chronomètre
, par exemple:Le profiler est la bonne réponse si vous avez plus d'une fonction.
Un autre problème que je vois avec toutes les suggestions données jusqu'à présent, c'est qu'ils fonctionnent très bien pour une seule fonction, mais votre code sera jonché avec le calendrier de choses que vous ne pouvez pas désactiver.
Si vous savez comment faire de la programmation orientée aspects, c'est une bonne façon de garder la synchronisation de code en un seul endroit et de les appliquer de manière déclarative. Si vous utilisez quelque chose comme Log4J à la sortie de la valeurs, vous aurez la possibilité de l'éteindre ou de sur. C'est un homme pauvre profiler.
Avoir un regard sur AspectJ ou de Spring AOP.
Tous les extraits de code ci-dessus mesurer approximativement le temps écoulé depuis le temps que la méthode a été appelée pour le moment le retour de la méthode/lance une exception. De telles techniques ne sont pas l'adresse de la planification des threads, des pauses, en raison de la GC, etc.
Oui, certains profileurs va faire une offre raisonnable.
Si vous utilisez la version 1.6 de Java à partir, vous pouvez utiliser le JMX VM de gestion et de surveillance. Par exemple, vous pouvez trouver ThreadMXBean.getCurrentThreadCpuTime() de valeur. Le calcul de la différence de cette valeur avant et après la méthode invoke vous donnera:
Si votre méthode engendre hors de threads de travail, votre calcul aurez besoin d'obtenir beaucoup plus élaborée 😉
En général, je recommande nez autour de la java.lang.mangement paquet.
Système.nanoTime devraient être utilisés pour mesurer avec précision le delta entre deux temps pour microbenchmarks.
Système.currentTimeMillis renvoie l'heure actuelle, en millisecondes. Vous pouvez l'utiliser pour obtenir l'heure actuelle. Cela peut être utile sur d'anciennes machines ou pour plus de processus en cours d'exécution.
Utiliser l'un ou l'autre Système.currentTimeMillis() ou d'un Système.nanoTime():
cette analogique-chronomètre est une autre option pour nous aussi...
Vérifier sur Java2s.com ici.
Si vous voulez obtenir à l'heure actuelle, l'utilisation
java.util.Date
.