我发现某些功能的第一次调用需要很长时间。 这是我的简单测试:
public class MainTest {
public static void main(String[] args) {
long k = 0;
for (int i = 0; i < 10; i++) {
long start = System.nanoTime();
k += doWork(i);
System.out.println(System.nanoTime() - start);
}
System.out.println(k);
}
public static long doWork(long var) {
for (int i = 0; i < 100000; i++) {
var += i;
}
return var;
}
}
结果:
820521
283961
292514
259442
88952
86100
82965
81539
74126
29651
你能给我一些关于它为什么会发生的版本吗?或者我能找到答案的一些资源。它可以与JIT连接,但我不确定。
我知道纳米时不适合测试。我试试JMH:
# Warmup Iteration 1: 179791124,395 ops/s
# Warmup Iteration 2: 183962412,435 ops/s
# Warmup Iteration 3: 284320650,805 ops/s