如果我正在设计排序算法测试,我可以这样做以避免 JVM 预热吗?谢谢!
double count = 0;
double start, end;
for(int r = 0; r < warmup; r++) {
// do test
}
for(int t = 0; t < runs; t++){
start = System.nanoTime();
// do test
end = System.nanoTime();
count += start - end;
}
double avg = count/avg
最佳答案
JVM 预热通常是指 JVM 找到热点并对这部分代码进行 JIT 所花费的时间。如果您运行实际测试几百次(我相信实际上是几千次),您应该可以顺利进行。
但是您应该知道,即使您这样做了,也没有任何保证。您必须对您的特定 JVM 进行试验,以确定在对重要部分进行 JIT 等操作之前您必须完成多少工作。
在this little case study JIT 编译在 1700 次调用后启动。
关于java - 避免 jvm 预热,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4345999/