我想測量我的方法在運行時執行中的性能速度,但我不確定我所做的是否真的測量了性能我的方法我想要或正在做其他事情。如果它測量的是我的方法的性能速度,而不是它的可靠性。我想測量性能速度的方法稱爲FFMulFast,它計算Galois Field(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();
}
我不知道「最可靠」,但你或許應該像一個分析器的標準工具開始。 – markspace
那麼......不是。你測量的時間,比方說,執行是兩個事件之間的時間差 - 啓動秒錶並停止它。但是事件之間發生了什麼 - 完整的GC,OS停止了所有的JVM線程等等 - - 你永遠不知道。所以更合適的可能是基準 - 有辦法做到這一點,好吧,正確 – micklesh
我認爲我做的一個也是基準測試。 –