toArray(new MyClass[0]) 或 toArray(new MyClass[myList.size()])?
在上下文中Java ArrayLists 中,toArray 方法可用于将 ArrayList 转换为指定类型的数组。但是,在使用空数组或列表精确大小的数组之间进行选择可能会影响性能。
性能注意事项
直观上,似乎需要预先调整数组,如 toArray(new MyClass[myList.size()]) ,会更有效。然而,微观基准测试表明,使用空数组 toArray(new MyClass[0]) 始终优于预先调整大小的方法,尤其是对于较大的列表。
为什么空数组更快
这种违反直觉的更快性能是由于 JVM 优化而产生的。 JVM 和 JIT 编译器具有用于创建和初始化数组的内置优化,手动创建数组时不会使用这些优化。
现实世界的影响
虽然对于小型阵列,性能差异可能并不显着,但对于较大阵列,性能差异可能会变得明显。因此,对于性能关键的情况或优化的内部循环,建议使用 toArray(new MyClass[0])。
总结
与最初的期望相反,使用与预先调整数组大小相比,ArrayList 的空数组 (toArray(new MyClass[0])) 表现出卓越的性能。这归因于 JVM 优化可以有效地处理数组创建和初始化,而在手动创建数组时无法利用这一点。
以上是`toArray(new MyClass[0]) 或 toArray(new MyClass[myList.size()]):对于 Java ArrayList 来说哪个更快?`的详细内容。更多信息请关注PHP中文网其他相关文章!