Home > Java > javaTutorial > ArrayList to Array: Why is `toArray(new MyClass[0])` Faster Than `toArray(new MyClass[myList.size()])`?

ArrayList to Array: Why is `toArray(new MyClass[0])` Faster Than `toArray(new MyClass[myList.size()])`?

Linda Hamilton
Release: 2024-12-02 09:50:10
Original
472 people have browsed it

ArrayList to Array: Why is `toArray(new MyClass[0])` Faster Than `toArray(new MyClass[myList.size()])`?

The Array Conundrum: .toArray(new MyClass[0]) vs .toArray(new MyClass[myList.size()])

When dealing with ArrayLists, converting them to arrays often arises. To do so, one can employ either of these two techniques:

// Option 1: Specify Array Size
MyClass[] arr = myList.toArray(new MyClass[myList.size()]);

// Option 2: Blank Array
MyClass[] arr = myList.toArray(new MyClass[0]);
Copy after login

In terms of performance, an unexpected finding emerged: on Hotspot 8, using an empty array surprisingly outperforms the presized version:

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.preSize      1000  avgt       30    1.512 ▒ 0.031  us/op
c.a.p.SO29378922.preSize      5000  avgt       30    6.884 ▒ 0.130  us/op
c.a.p.SO29378922.preSize     10000  avgt       30   13.147 ▒ 0.199  us/op
c.a.p.SO29378922.preSize    100000  avgt       30  159.977 ▒ 5.292  us/op
c.a.p.SO29378922.resize          1  avgt       30    0.019 ▒ 0.000  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
c.a.p.SO29378922.resize       5000  avgt       30    5.318 ▒ 0.121  us/op
c.a.p.SO29378922.resize      10000  avgt       30   10.652 ▒ 0.227  us/op
c.a.p.SO29378922.resize     100000  avgt       30  139.692 ▒ 8.957  us/op
Copy after login

The JVM and JIT compiler optimize creation and initialization of new, correctly sized arrays. However, these optimizations cannot be applied to user-created arrays. Therefore, using an empty array allows the JVM to perform these optimizations, resulting in improved performance.

The above is the detailed content of ArrayList to Array: Why is `toArray(new MyClass[0])` Faster Than `toArray(new MyClass[myList.size()])`?. For more information, please follow other related articles on the PHP Chinese website!

source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Latest Articles by Author
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template