RFR: 8289908: Skip bounds check for cases when String is constructed from entirely used byte[] [v4]
Сергей Цыпанов
duke at openjdk.org
Wed Jul 13 15:11:26 UTC 2022
On Tue, 12 Jul 2022 15:57:12 GMT, Roger Riggs <rriggs at openjdk.org> wrote:
>> Benchmark results after:
>>
>> Benchmark Mode Cnt Score Error Units
>> StringConstructor.newStringFromArray avgt 50 4,354 ± 0,195 ns/op
>> StringConstructor.newStringFromArrayWithCharset avgt 50 4,035 ± 0,088 ns/op
>> StringConstructor.newStringFromArrayWithCharsetName avgt 50 8,166 ± 0,062 ns/op
>> StringConstructor.newStringFromRangedArray avgt 50 4,132 ± 0,054 ns/op
>> StringConstructor.newStringFromRangedArrayWithCharset avgt 50 4,416 ± 0,206 ns/op
>> StringConstructor.newStringFromRangedArrayWithCharsetName avgt 50 7,421 ± 0,041 ns/op
>
> Matching the existing Void argument looks better.
> The new private method should have a comment saying that it does not do any precondition checks on the arguments.
>
> (Reordering the arguments is an alternative to adding an argument, for example, (Charset, byte[], int, int).
> But it is less readable and can raise questions due to the different order of arguments.)
Updated PR. With newer version I get these results:
Benchmark Mode Cnt Score Error Units
StringConstructor.newStringFromArray avgt 50 4,831 ± 0,205 ns/op
StringConstructor.newStringFromArrayWithCharset avgt 50 3,940 ± 0,008 ns/op
StringConstructor.newStringFromArrayWithCharsetName avgt 50 7,662 ± 0,112 ns/op
StringConstructor.newStringFromRangedArray avgt 50 4,175 ± 0,065 ns/op
StringConstructor.newStringFromRangedArrayWithCharset avgt 50 3,970 ± 0,037 ns/op
StringConstructor.newStringFromRangedArrayWithCharsetName avgt 50 7,480 ± 0,014 ns/op
-------------
PR: https://git.openjdk.org/jdk/pull/9407
More information about the security-dev
mailing list