On Wed, 8 Feb 2023 00:07:14 GMT, Claes Redestad <redes...@openjdk.org> wrote:
>> This patch adds special-cases to `Arrays.copyOf` and `Arrays.copyOfRange` to >> clone arrays when `newLength` or range inputs span the input array. This >> helps eliminate range checks and has been verified to help various String >> operations. Example: >> >> Baseline >> >> Benchmark (size) Mode Cnt >> Score Error Units >> StringConstructor.newStringFromArray 7 avgt 15 >> 16.817 ± 0.369 ns/op >> StringConstructor.newStringFromArrayWithCharset 7 avgt 15 >> 16.866 ± 0.449 ns/op >> StringConstructor.newStringFromArrayWithCharsetName 7 avgt 15 >> 22.198 ± 0.396 ns/op >> >> Patch: >> >> Benchmark (size) Mode Cnt >> Score Error Units >> StringConstructor.newStringFromArray 7 avgt 15 >> 14.666 ± 0.336 ns/op >> StringConstructor.newStringFromArrayWithCharset 7 avgt 15 >> 14.582 ± 0.288 ns/op >> StringConstructor.newStringFromArrayWithCharsetName 7 avgt 15 >> 20.339 ± 0.328 ns/op > > Claes Redestad has updated the pull request incrementally with one additional > commit since the last revision: > > Minimize, force inline, generalize test/micro/org/openjdk/bench/java/lang/StringConstructor.java line 40: > 38: > 39: @Param({"0", "7", "64"}) > 40: public int size; I suggest to add the param `offset` for future experiment: together with `perfasm` it helps to check how different stubs are used and emulate the different branches of the optimized code ------------- PR: https://git.openjdk.org/jdk/pull/12453