RFR: 8270160: Remove redundant bounds check from AbstractStringBuilder.charAt() [v3]
Claes Redestad
redestad at openjdk.java.net
Mon Aug 2 10:56:34 UTC 2021
On Thu, 15 Jul 2021 11:56:31 GMT, Сергей Цыпанов <github.com+10835776+stsypanov at openjdk.org> wrote:
>> `AbstractStringBuilder.charAt(int)` does bounds check before calling `charAt()` (for non-latin Strings):
>>
>> @Override
>> public char charAt(int index) {
>> checkIndex(index, count);
>> if (isLatin1()) {
>> return (char)(value[index] & 0xff);
>> }
>> return StringUTF16.charAt(value, index);
>> }
>>
>> This can be improved by removing bounds check from ASB.charAt() in favour of one in String*.charAt(). This gives slight improvement:
>>
>> before
>> Benchmark Mode Cnt Score Error Units
>> StringBuilderCharAtBenchmark.latin avgt 50 2,827 ± 0,024 ns/op
>> StringBuilderCharAtBenchmark.utf avgt 50 2,985 ± 0,020 ns/op
>>
>> after
>> Benchmark Mode Cnt Score Error Units
>> StringBuilderCharAtBenchmark.latin avgt 50 2,434 ± 0,004 ns/op
>> StringBuilderCharAtBenchmark.utf avgt 50 2,631 ± 0,004 ns/op
>
> Сергей Цыпанов has refreshed the contents of this pull request, and previous commits have been removed. The incremental views will show differences compared to the previous content of the PR.
Changes requested by redestad (Reviewer).
-------------
PR: https://git.openjdk.java.net/jdk/pull/4738
More information about the core-libs-dev
mailing list