首页 >Java >java教程 >`toArray(new MyClass[0]) 与 toArray(new MyClass[myList.size()]):哪个性能更好?`

`toArray(new MyClass[0]) 与 toArray(new MyClass[myList.size()]):哪个性能更好?`

DDD
DDD原创
2024-11-24 17:28:13450浏览

`toArray(new MyClass[0]) vs. toArray(new MyClass[myList.size()]): Which is More Performant?`

toArray(new MyClass[0]) 或 toArray(new MyClass[myList.size()]) 性能影响

转换时ArrayList 到数组,开发者可以选择两种方法:

  • MyClass[] arr = myList.toArray(new MyClass[myList.size()]);
  • MyClass[] arr = myList.toArray(new MyClass[0]);

而第二个选项不太冗长,它提出了有关可能的性能考虑因素的问题。

基准分析

为了确定性能影响,在 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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn