RFR: 8289908: Skip bounds check for cases when String is constructed from entirely used byte[] [v4]
Roger Riggs
rriggs at openjdk.org
Wed Jul 13 15:47:12 UTC 2022
On Wed, 13 Jul 2022 15:11:25 GMT, Сергей Цыпанов <duke at openjdk.org> wrote:
>> We can skip bounds check and null check for Charset in case we use the array entirely and the Charset is either default one or proven to be non-null.
>>
>> Benchmark results:
>>
>> before
>>
>> Benchmark Mode Cnt Score Error Units
>> StringConstructor.newStringFromArray avgt 50 4,815 ± 0,154 ns/op
>> StringConstructor.newStringFromArrayWithCharset avgt 50 4,462 ± 0,068 ns/op
>> StringConstructor.newStringFromArrayWithCharsetName avgt 50 8,653 ± 0,040 ns/op
>> StringConstructor.newStringFromRangedArray avgt 50 5,090 ± 0,066 ns/op
>> StringConstructor.newStringFromRangedArrayWithCharset avgt 50 4,550 ± 0,041 ns/op
>> StringConstructor.newStringFromRangedArrayWithCharsetName avgt 50 8,080 ± 0,055 ns/op
>>
>> after
>>
>> Benchmark Mode Cnt Score Error Units
>> StringConstructor.newStringFromArray avgt 50 4,595 ± 0,053 ns/op
>> StringConstructor.newStringFromArrayWithCharset avgt 50 4,038 ± 0,062 ns/op
>> StringConstructor.newStringFromArrayWithCharsetName avgt 50 8,035 ± 0,031 ns/op
>> StringConstructor.newStringFromRangedArray avgt 50 4,084 ± 0,007 ns/op
>> StringConstructor.newStringFromRangedArrayWithCharset avgt 50 4,014 ± 0,008 ns/op
>> StringConstructor.newStringFromRangedArrayWithCharsetName avgt 50 7,466 ± 0,071 ns/op
>
> Сергей Цыпанов has updated the pull request with a new target base due to a merge or a rebase. The incremental webrev excludes the unrelated changes brought in by the merge/rebase. The pull request contains six additional commits since the last revision:
>
> - 8289908: Rework constructor
> - Merge branch 'master' into 8289908
> - 8289908: Fixed tests
> - Merge branch 'master' into 8289908
> - 8289908: Make constructor private and use trailing Void instead of int
> - 8289908: Skip bounds check for cases when String is constructed from entirely used byte[]
Looks good, thanks for the updates.
src/java.base/share/classes/java/lang/String.java line 528:
> 526: * <p>
> 527: * Important: parameter order of this method is deliberately changed in order to
> 528: * disambiguate it against other similar methods ot this class.
typo? "ot this".
-------------
Marked as reviewed by rriggs (Reviewer).
PR: https://git.openjdk.org/jdk/pull/9407
More information about the core-libs-dev
mailing list