gpt4 book ai didi

java - JDK 11 与 JDK 13 的性能

转载 作者:行者123 更新时间:2023-12-01 11:17:50 28 4
gpt4 key购买 nike

更新

在整个评论中,结果证明我采用的基准测试方法是不正确的,因此结果具有误导性。纠正我的方法后(如已接受的答案),结果正如人们所期望的 - JDK 13 的性能与 JDK 11 一样好。有关更多详细信息,请参阅答案。

原问题

我在 Windows 10 下对 HashSet 进行了一些性能基准测试,使用以下 JMH 测试代码:

@Benchmark
@BenchmarkMode(Mode.AverageTime)
@Fork(value = 1, warmups = 1)
public void init() {
HashSet<String> s = new HashSet<>();
for (int i = 0; i < 1000000; i++) {
s.add(Math.random() + "");
}
s.size();
}

我在不同的 JDK 版本下编译并运行它,这是我得到的结果:

enter image description here

我也用不同的堆大小对其进行了测试(因此每个 JDK 有 3 种不同的颜色)。
JDK 14 当然是今天的预发布快照——只是为了看看 ZGC 在 Windows 下的表现。

我想知道 - JDK 11 之后发生了什么? (注意,对于 JDK 12,它已经开始增长,即使它没有出现在上面的图表中)

最佳答案

感谢大家在评论中提出建议。

答案很可能是Math.random()HashSet ,或丢失 Blackhole::consume或所有的组合。我将测试更改为简单地执行 i + "aaaaaaaaa"并替换 HashSetArrayList用适当的大小预先初始化以适应要填充的所有值。我还加了 Blackhole::consume最后排除不需要的 JIT 优化。

毕竟,时间从 JDK 8 逐渐下降到 11,然后在 JDK 11-13 之间保持大致相同。在 JDK 14 中,它略有提高,但还好——它还没有发布。

关于java - JDK 11 与 JDK 13 的性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60154649/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com