RFR: 8291598: Matcher.appendReplacement should not create new StringBuilder instances

Raffaello Giulietti rgiulietti at openjdk.org
Wed Mar 15 18:24:57 UTC 2023


On Wed, 15 Mar 2023 18:15:02 GMT, Raffaello Giulietti <rgiulietti at openjdk.org> wrote:

> Remove instantiation of `StringBuilder`

Benchmark for the example in the documentation for `Matcher.appendReplacement()`

before

Benchmark                                Mode  Cnt    Score   Error  Units
AppendReplacement.testAppendReplacement  avgt   15  177.029 ± 6.294  ns/op

after

Benchmark                                Mode  Cnt    Score   Error  Units
AppendReplacement.testAppendReplacement  avgt   15  142.373 ± 1.684  ns/op


Same example, but with pattern `"(cat)"` (1 capturing group), matcher on the input repeated 1000 times, and replacement string `"$1dog$1cat$1mouse"` (3 back references).

before

Benchmark                                Mode  Cnt       Score      Error  Units
AppendReplacement.testAppendReplacement  avgt   15  262576.335 ± 3718.905  ns/op

after

Benchmark                                Mode  Cnt       Score     Error  Units
AppendReplacement.testAppendReplacement  avgt   15  225700.642 ± 683.721  ns/op

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

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


More information about the core-libs-dev mailing list