我试图用类似的 block 检查执行时间。
示例代码和输出如下,
public class Tester {
public static void main(String[] args) {
System.out.println("Run 1");
List<Integer> list = new ArrayList<>();
int i = 0;
long st = System.currentTimeMillis();
while (++i < 10000) {
list.add(i);
}
System.out.println("Time taken :" + (System.currentTimeMillis() - st));
System.out.println("Run 2");
int j = 0;
List<Integer> list2 = new ArrayList<>();
long ST = System.currentTimeMillis();
while (++j < 10000) {
list2.add(j);
}
System.out.println("Time taken :" + (System.currentTimeMillis() - ST));
System.out.println("Run 3");
int k = 0;
List<Integer> list3 = new ArrayList<>();
long ST2 = System.currentTimeMillis();
while (++k < 10000) {
list3.add(k);
}
System.out.println("Time taken :" + (System.currentTimeMillis() - ST2));
}
}
输出
Run 1
Time taken :6
Run 2
Time taken :3
Run 3
Time taken :1
为什么我的执行时间不同?
最佳答案
这可能是为了对数组列表进行即时编译和热点优化,但你不能100%确定。
除此之外,您的样本量太小,意义不大。
关于java - 相同的代码块执行时长不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36301187/