假设我有一个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程序性能方面是否“标准/常见”?