Je veux mesurer la vitesse de performance de ma méthode en exécution mais je ne suis pas sûr si ce que j'ai fait est vraiment mesuré la performance de ma méthode je veux ou fait autre chose. Si elle mesure la vitesse de performance de ma méthode plutôt que sa fiabilité. La méthode que je veux mesurer la vitesse de performance s'appelle FFMulFast et elle calcule la multiplication de deux parties polynomiales du Champ de Galois (256). Note: Je vais présenter seulement le code qui est pertinent à ma question.Quelle est la façon la plus fiable de mesurer la vitesse de performance des méthodes en runtime en Java
public class GaloaField {
// some fields here
public int FFMulFast(int a, int b){
int t = 0;;
if (a == 0 || b == 0)
return 0;
/* The multiplication is done by using lookup tables. We have used both logarithmic and exponential table for mul
* the idea is firstly look to Logarithmic table then add their powers and find the corresponding of this to exponential table */
t = (Log[(a & 0xff)] & 0xff) + (Log[(b & 0xff)] & 0xff);
if (t > 255) t = t - 255;
return Exp[(t & 0xff)];
}
//some other methods here
public void runABunch() { //method which will measure the performance speed of FFMulFast
long start = System.nanoTime();
int a=0x56;
int b=0xf4;
for (int i = 0; i < 5000000; i++)
FFMulFast(a,b);
long end = System.nanoTime();
System.out.println("Time: " + (end-start));
}
public static void main (String [] args) {
GaloaField galoa=new GaloaField();
galoa.runABunch();
}
Je ne sais pas « plus fiable » mais vous devriez probablement commencer par un outil standard comme un profileur. – markspace
Eh bien, là ... n'est pas. Le temps que vous mesurez pour, disons, une exécution est la différence de temps entre deux événements - démarrer le chronomètre et l'arrêter. Mais qu'est-ce qui s'est passé entre les événements - GC complet, OS a arrêté tous les threads JVM, etc etc - vous ne savez jamais. Donc, plus approprié pourrait être l'analyse comparative - et il y a des façons de le faire, eh bien, correctement – micklesh
je pensais que celui que j'ai fait est également l'analyse comparative. –