我们需要运行多少次Java程序来预热JVM?
假设我有一个Java程序Test.class
。我想测量它的执行时间。我编写了一个包装器,如下所示:
class RunTest {
public static void main(String[] args) {
long sum = 0;
int iterations = 20;
int warmupNum = 10;
for(int i=0; i<iterations; i++){
long start = System.nanoTime();
Test.main(args);
long end = System.nanoTime();
if( i > warmupNum )
sum += end - start;
}
System.out.println("ave: "+sum/(iterations-warmupNum));
}
}
这里如何选择warmupNum
,越大越好?有多大足够?这是衡量Java程序性能的“标准/通用”方法吗
# 1 楼答案
使用Caliper比创建自己的微基准实用程序要好
How do I write a correct micro-benchmark in Java?