RFR: 8273100: Improve AbstractStringBuilder.append(String) when using CompactStrings

Claes Redestad redestad at openjdk.java.net
Sat Aug 28 14:28:22 UTC 2021


On Sat, 28 Aug 2021 13:21:24 GMT, Claes Redestad <redestad at openjdk.org> wrote:

> Refactor to improve inlining, which helps some microbenchmarks exer StringBuilder.append(String)

Microbenchmark results:

Baseline

Benchmark                    Mode  Cnt    Score   Error  Units
# +CompactStrings
StringBuilders.appendLoop16  avgt   25  749.861 ± 6.717  ns/op
StringBuilders.appendLoop8   avgt   25  382.491 ± 4.603  ns/op

# -CompactStrings
StringBuilders.appendLoop16  avgt   25  716.850 ± 7.857  ns/op
StringBuilders.appendLoop8   avgt   25  374.279 ± 5.793  ns/op

# -Xint +CompactStrings:
StringBuilders.appendLoop16  avgt    5  23479.176 ± 135.382  ns/op
StringBuilders.appendLoop8   avgt    5  12075.346 ±  80.429  ns/op

# -Xint -CompactStrings:
Benchmark                    Mode  Cnt      Score     Error  Units
StringBuilders.appendLoop16  avgt    5  22166.303 ± 295.892  ns/op
StringBuilders.appendLoop8   avgt    5  11480.187 ± 710.690  ns/op

Patched:

Benchmark                    Mode  Cnt    Score   Error  Units
# +CompactStrings
StringBuilders.appendLoop16  avgt   25  724.803 ± 9.613  ns/op
StringBuilders.appendLoop8   avgt   25  374.400 ± 6.368  ns/op

# -CompactStrings
StringBuilders.appendLoop16  avgt   25  715.314 ± 11.787  ns/op
StringBuilders.appendLoop8   avgt   25  377.415 ±  6.089  ns/op

# -Xint +CompactStrings
StringBuilders.appendLoop16  avgt    5  19794.280 ± 227.033  ns/op
StringBuilders.appendLoop8   avgt    5  10200.439 ± 221.899  ns/op

# -Xint -CompactStrings
StringBuilders.appendLoop16  avgt    5  16855.894 ± 127.499  ns/op
StringBuilders.appendLoop8   avgt    5   9004.396 ± 111.427  ns/op

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

PR: https://git.openjdk.java.net/jdk/pull/5291


More information about the core-libs-dev mailing list