Uploaded image for project: 'OpenNLP'
  1. OpenNLP
  2. OPENNLP-1466

Convert the use of Collection#toArray(..) more performant version under modern JVMs

    XMLWordPrintableJSON

Details

    • Improvement
    • Status: Closed
    • Major
    • Resolution: Fixed
    • 2.1.0, 2.1.1
    • 2.2.0
    • 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

      Attachments

        Activity

          People

            mawiesne Martin Wiesner
            mawiesne Martin Wiesner
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: