RFR: 8305774: String.join(CharSequence, Iterable) can be optimized if Iterable is a Collection [v2]

Tingjun Yuan duke at openjdk.org
Sun Apr 9 02:28:37 UTC 2023


> In the current implementation of `String.join(CharSequence, Iterable)`, the temp array `elems` is always initialized with a length of 8. It will cause many array recreations when the `Iterable` contains more than 8 elements. Furthermore, it's very common that an `Iterable` is also a `Collection`. So if the `Iterable` is an instance of `Collection`, the initial length of the array can be `((Collection<?>)elements).size()`. It will not change the current behavior even if the `Collection` is modified asynchronously.
> 
> I don't know whether this change requires a CSR request.

Tingjun Yuan has updated the pull request incrementally with one additional commit since the last revision:

  Add benchmark

-------------

Changes:
  - all: https://git.openjdk.org/jdk/pull/13383/files
  - new: https://git.openjdk.org/jdk/pull/13383/files/3d4787ed..50e670c7

Webrevs:
 - full: https://webrevs.openjdk.org/?repo=jdk&pr=13383&range=01
 - incr: https://webrevs.openjdk.org/?repo=jdk&pr=13383&range=00-01

  Stats: 89 lines in 1 file changed: 89 ins; 0 del; 0 mod
  Patch: https://git.openjdk.org/jdk/pull/13383.diff
  Fetch: git fetch https://git.openjdk.org/jdk.git pull/13383/head:pull/13383

PR: https://git.openjdk.org/jdk/pull/13383


More information about the core-libs-dev mailing list