Java性能优化
有三种性能测试: microbenchmarks, macrobenchmarks, 以及 mesobenchmarks
microbenchmarks性能测试:
好的microbenchmarks很难写,需要注意很多事项
针对多个输入进行测试,避免代码被编译器优化
被测试的函数运行的结果需要有地方使用,避免被优化,比如下面的l就没有使用
public void doTest() { // Main Loop
double l; for(inti=0;i<nWarmups;i++){
l = fibImpl1(50);
}
long then = System.currentTimeMillis();
for(inti=0;i<nLoops;i++){
l = fibImpl1(50);
}
long now = System.currentTimeMillis();
System.out.println("Elapsed time: " + (now - then));
}
在生产环节中,microbenchmarks可能完全不一样,因为编译器会根据函数调用情况进行优化
Macrobenchmarks
测试一个应用的整体性能
Mesobenchmarks
居于microbenchmarks和Macrobenchmarks中间,比如只测试一个REST接口