On Mon, 14 Jun 2021 13:43:40 GMT, Hannes Wallnöfer <hann...@openjdk.org> wrote:
> This change fixes a performance regression caused by passing instances of > `com.sun.tools.javac.util.Name` to a `html.markup.Text` object, where their > content is accessed using`CharSequence` methods which are implemented very > inefficiently. > > Since improving `javac.util.Name` will likely require a bit more work (see > JDK-8268622), a safe short term solution for JDK 17 is to make sure instances > of `Name` are converted to `String` before invoking said `CharSequence` > methods. The main fix is to convert to `String` early in > `Entity.escapeHtmlChars(CharSequence)` which is invoked by the `Text` > constructor. There are a few more `.toString()` invocations added in places > where a `Name` is appended to a `StringBuilder`, although these have less > performance impact. Based on these numbers, 8% degradation followed by 5% improvement, this patch reverses approximately half of the initial degradation introduced by JDK-8260223, right? (Had to remind myself how tricky percentages can be.) If so, then where is the other half? Should we be concerned about it? ------------- PR: https://git.openjdk.java.net/jdk17/pull/42