我想在运行时执行中测量我的方法的性能速度,但我不确定我所做的是否真的测量了我想要的方法或正在做其他事情的性能。如果它测量我的方法的性能速度而不是它的可靠性。我想测量性能速度的方法称为FFMulFast,它计算伽罗瓦域(256)的两个多项式部分的乘法。注意:我只会提供与我的问题相关的代码。
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 :(得分:1)
请查看jmh - http://openjdk.java.net/projects/code-tools/jmh/
有关microbenchmarking的更多信息:
答案 1 :(得分:0)
当您在独立程序中运行程序时,这非常好。您可以考虑在生产环境中进行实时分析的分析/检测。以下帖子对此有很好的介绍。
http://blog.javabenchmark.org/2013/05/java-instrumentation-tutorial.html