toArray(new MyClass[0]) 或 toArray(new MyClass[myList.size()]) 性能影响
转换时ArrayList 到数组,开发者可以选择两种方法:
而第二个选项不太冗长,它提出了有关可能的性能考虑因素的问题。
基准分析
为了确定性能影响,在 Hotspot 8 上使用 JMH 进行了基准测试。结果显示,使用空数组始终优于调整数组大小:
Benchmark (n) Mode Samples Score Error Units c.a.p.SO29378922.preSize 1 avgt 30 0.025 ▒ 0.001 us/op c.a.p.SO29378922.preSize 100 avgt 30 0.155 ▒ 0.004 us/op ... c.a.p.SO29378922.resize 100 avgt 30 0.133 ▒ 0.003 us/op c.a.p.SO29378922.resize 1000 avgt 30 1.075 ▒ 0.022 us/op ...
解释
这一违反直觉的发现可归因于采用的优化JVM 和 JIT 编译器。这些优化允许有效地创建和初始化正确大小的数组,而不需要用户提供维度。
建议
基于基准测试结果和分析,它是推荐使用:
MyClass[] arr = myList.toArray(new MyClass[0]);
这不仅可以提高性能,而且符合让 JVM 优化数组创建等常见操作的原则。
以上是`toArray(new MyClass[0]) 与 toArray(new MyClass[myList.size()]):哪个性能更好?`的详细内容。更多信息请关注PHP中文网其他相关文章!