首页  >  文章  >  Java  >  数组大小如何影响 Java 中 ArrayList 到数组的转换性能?

数组大小如何影响 Java 中 ArrayList 到数组的转换性能?

Susan Sarandon
Susan Sarandon原创
2024-11-26 08:10:11442浏览

How Does Array Sizing Impact ArrayList to Array Conversion Performance in Java?

调整 toArray 中的数组大小

使用 toArray 方法将 ArrayList 转换为数组时,有两种选项用于指定数组的大小:调整数据库的大小或一个空的数据库。让我们探讨一下它们对性能的影响。

假设我们有一个ArrayList称为 myList,我们可以使用以下语法来创建数组:

MyClass[] arr = myList.toArray(new MyClass[myList.size()]); // Presized array
MyClass[] arr = myList.toArray(new MyClass[0]); // Empty array

直观上,调整数组大小可能看起来更有效,但使用 Java Microbenchmark Harness (JMH) 的基准测试结果揭示了一个令人惊讶的发现。使用空大小参数 (new MyClass[0]) 创建数组的性能始终优于预先调整大小的版本 (new MyClass[myList.size()])。

JVM 和 JIT 编译器进行了优化,可以有效地创建和初始化正确大小的数组。通过提供空数组,编译器可以利用这些优化,从而获得更好的性能。随着数组大小的增加,这种优势尤其明显。

以下是基准测试结果:

Size Presized Array (μs) Empty Array (μs)
1 0.025 0.019
100 0.155 0.133
1000 1.512 1.075
5000 6.884 5.318
10000 13.147 10.652
100000 159.977 139.692

如您所见,空数组方法提供了轻微但一致的性能优势。但是,请务必注意,这些结果可能会有所不同,具体取决于特定的 JVM 和 JIT 编译器优化以及数据的大小和特征。

以上是数组大小如何影响 Java 中 ArrayList 到数组的转换性能?的详细内容。更多信息请关注PHP中文网其他相关文章!

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