java - 为什么以下测试对于第一种情况总是更快?
问题描述
我正在测试处理整数流(基元)的两种不同方法的性能。令我惊讶的是,无论顺序如何,第一个测试用例总是较慢。
public void intStreamTest() {
final int[] ints = new int[1000];
for (int x = 0; x < 1000; x++) {
ints[x] = new Random().nextInt(1000);
}
// T1
long start = System.currentTimeMillis();
for (int x = 0; x <= 10000; x++) {
List<Integer> result =
IntStream.of(ints).boxed().collect(Collectors.toList());
}
System.out.println("T1 " + (System.currentTimeMillis() - start));
// T2
long start2 = System.currentTimeMillis();
for (int x = 0; x <= 10000; x++) {
List<Integer> result =
IntStream.of(ints).mapToObj(Integer::valueOf).collect(Collectors.toList());
}
System.out.println("T2 " + (System.currentTimeMillis() - start2));
}
以下是输出示例:
T1 150
T2 95
当我更改测试用例的顺序(交换 T2 和 T1 部分)时,我得到:
T2 153
T1 92
我犯错了吗?第二个测试用例怎么可能总是更快(大约 60%)?
解决方案
推荐阅读
- c++ - 关于 ctor/dtor 行为与继承类的混淆
- python - 从预训练模型中获取一组嵌入 - vgg16 pytorch
- python - 一个实例属性引用另一个,在类实例化后更新
- html - 全屏图像不适用于 ipad,只有 css 和 html
- python - 用另一个 DataFrame 替换 pandas 多索引 DataFrame 的列
- kotlin - 什么时候适合在 Micronauts 中使用 @Singleton 和 @Prototype?
- html - 另一个网格的单元格内的网格容器
- sql - Oracle - json数据包含可互换的数组/字符串
- webpack - Webpack 4文件加载器不移动图像
- python - 熊猫,切片和创建视图