Details
-
Improvement
-
Status: Closed
-
Major
-
Resolution: Fixed
-
2.1.0, 2.1.1
-
None
-
None
Description
In older Java versions, using a pre-sized array was preferred, as the reflection call necessary to create an array of pre-computed size was rather slow. However, since Java 6+, the performance of the empty array version the same, and sometimes even better. [1] [2]
The code of many OpenNLP classes still relies on the old style of converting collections to arrays, via someCollection.toArray(...size()) or similar, in essence: via a pre-computed length. However, the zero-sized initialization is considered (and demonstrated) to be faster under Java 11+ vms. [3]
Aims
- Migrate the old way of creating / converting to arrays to the more performant version.
- Ensure all tests hold no drawbacks show up.
[1]: https://shipilev.net/blog/2016/arrays-wisdom-ancients/#_new_reflective_array
[2]: https://www.baeldung.com/java-collection-toarray-methods#performance-trials
[3]: https://www.baeldung.com/java-collection-toarray-methods#benchmarks-on-newer-jdks