2016-05-25 6 views
-1

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(); 

} 
+0

Je ne sais pas « plus fiable » mais vous devriez probablement commencer par un outil standard comme un profileur. – markspace

+0

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

+0

je pensais que celui que j'ai fait est également l'analyse comparative. –

Répondre