On Fri, 30 Sep 2022 16:14:38 GMT, Сергей Цыпанов <d...@openjdk.org> wrote:
>> src/java.base/share/classes/java/text/PatternEntry.java line 291: >> >>> 289: // We re-use these objects in order to improve performance >>> 290: private StringBuilder newChars = new StringBuilder(); >>> 291: private StringBuilder newExtension = new StringBuilder(); >> >> Again, in 2022, I don't know that this cache+reuse pattern is needed for >> performance. > > Due to some [bootstrapping > issues](https://stackoverflow.com/questions/71834059/why-invokedynamic-based-string-concatenation-is-not-available-for-javac-in-java) > in `java.base` explicit String concatenation is not translated into > invokedynamic, so in practice it's faster to use `StringBuilder.append()` > than `str1 + str2`, see e.g. https://github.com/openjdk/jdk/pull/3903 Thanks. I was not suggesting that we use string concatenation, but rather just remove the `newChar`/`newExtension` fields, and replace, e.g.: `214 newChars.setLength(0);` with `214 StringBuilder newChars = new StringBuilder();` though I'll admit that I don't have a good sense of whether that's worth doing. ------------- PR: https://git.openjdk.org/jdk/pull/10475