2016-05-25 7 views
-1

Я хочу измерить скорость выполнения моего метода во время выполнения, но я не уверен, действительно ли то, что я сделал, действительно измеряет производительность мой метод, который я хочу или делаю что-то еще. Если он измеряет скорость работы моего метода, чем он надежный. Метод, который я хочу измерить скорость работы, называется FFMulFast и вычисляет умножение двух многочленов части поля Галуа (256). Примечание: я буду представлять только код, который имеет отношение к моему вопросу.Какой самый надежный способ измерения скорости выполнения методов во время выполнения в 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

Я не знаю, о «наиболее надежным», но вы, вероятно, следует начать со стандартным инструментом, как профайлер. – markspace

+0

Ну, там ... нет. Время, в течение которого вы измеряете, скажем, выполнение, - это разница во времени между двумя событиями - запуск секундомера и его остановка. Но то, что произошло между событиями - полный GC, ОС остановил все потоки JVM и т. Д. И т. Д. - вы никогда не знаете. Поэтому более подходящим может быть бенчмаркинг - и есть способы сделать это, ну, правильно – micklesh

+0

Я думал, что тот, который я сделал, также является бенчмаркингом. –

ответ

0

Это прекрасно, когда вы запускаете свою программу в автономном режиме. Вы можете рассмотреть профилирование/инструментарий для анализа в реальном времени в производстве, таком как окружающая среда. Внизу сообщение имеет очень хорошее введение для того же самого.

http://blog.javabenchmark.org/2013/05/java-instrumentation-tutorial.html

 Смежные вопросы

  • Нет связанных вопросов^_^