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

Reply via email to