Si vous êtes en train d'écrire l'application, alors la réponse est d'utiliser l'option System.currentTimeMillis ou System.nanoTime servent l'objectif indiqué par les personnes ci-dessus.
Mais si vous avez déjà écrit le code, et que vous ne voulez pas le modifier, il est préférable d'utiliser les intercepteurs de méthodes de Spring. Ainsi, par exemple, votre service est :
public class MyService {
public void doSomething() {
for (int i = 1; i < 10000; i++) {
System.out.println("i=" + i);
}
}
}
Pour éviter de modifier le service, vous pouvez écrire votre propre intercepteur de méthode :
public class ServiceMethodInterceptor implements MethodInterceptor {
public Object invoke(MethodInvocation methodInvocation) throws Throwable {
long startTime = System.currentTimeMillis();
Object result = methodInvocation.proceed();
long duration = System.currentTimeMillis() - startTime;
Method method = methodInvocation.getMethod();
String methodName = method.getDeclaringClass().getName() + "." + method.getName();
System.out.println("Method '" + methodName + "' took " + duration + " milliseconds to run");
return null;
}
}
Il existe également des API open source disponibles pour Java, par exemple BTrace . ou Netbeans profiler comme suggéré ci-dessus par @bakkal et @Saikikos. Merci.
1 votes
Lol, cela fait beaucoup de doublons :D dommage que lorsque vous fermez une question, vous ne pouvez en nommer qu'une seule :(
1 votes
Voici une classe de chronomètre pour java. Le format de sortie du temps est identique à celui de la classe Stopwatch de .NET. carlosqt.blogspot.com/2011/05/stopwatch-class-for-java.html
0 votes
Vous avez oublié de mentionner explicitement l'objectif de la mesure, qui pourrait avoir une influence sur la manière dont elle doit être effectuée. Quoi qu'il en soit, il semble que vous souhaitiez optimiser les performances. Dans ce cas, vous devriez absolument vous renseigner sur le "Micro Benchmarking". Bien que l'approche System.nanoTime() soit assez simple, il n'existe pas de moyen facile de mesurer exactement les performances d'un programme, car elles dépendent d'un grand nombre de facteurs différents (par exemple, le matériel, les autres logiciels fonctionnant sur le même système, la compilation juste-à-temps et à chaud, les données d'entrée, etc.)
0 votes
Voici un chronomètre que j'ai fabriqué, il est très simple à utiliser. gist.github.com/juanmf/4147a9b7010c7b04c003