2016-05-25 19 views
-1

Ich möchte die Geschwindigkeit meiner Methode in Laufzeitausführung zu messen, aber ich bin mir nicht sicher, ob was ich getan habe, ist wirklich die Leistung gemessen meine Methode Ich will oder tue etwas anderes. Wenn es die Leistungsgeschwindigkeit meiner Methode misst, als wie zuverlässig es ist. Die Methode, die ich Leistung Geschwindigkeit messen will, heißt FFMulFast und berechnet die Multiplikation von zwei Polynomen Teil von Galois-Feld (256). Hinweis: Ich werde nur den Code präsentieren, der für meine Frage relevant ist.Welches ist die zuverlässigste Möglichkeit, die Geschwindigkeit der Methoden in Laufzeit in Java zu messen

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

Ich weiß nicht, über „zuverlässigsten“, aber Sie sollten wahrscheinlich mit einem Standardwerkzeug wie ein Profiler starten. – markspace

+0

Nun, da ... ist es nicht. Die Zeit, für die Sie messen, sagen wir mal, eine Ausführung ist der Zeitunterschied zwischen zwei Ereignissen - die Stoppuhr starten und stoppen. Aber was zwischen den Ereignissen passiert ist - voller GC, OS gestoppt alle JVM-Threads, etc. etc. - man weiß nie. Also besser geeignet wäre Benchmarking - und es gibt Möglichkeiten, es zu tun, gut, richtig – micklesh

+0

Ich dachte, das, was ich tat, ist auch Benchmarking. –

Antwort