RFR: 8270160: Remove redundant bounds check from AbstractStringBuilder.charAt() [v5]
Сергей Цыпанов
github.com+10835776+stsypanov at openjdk.java.net
Mon Aug 2 11:34:00 UTC 2021
> `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 updated the pull request incrementally with one additional commit since the last revision:
8270160 Revert irrelevant changes
-------------
Changes:
- all: https://git.openjdk.java.net/jdk/pull/4738/files
- new: https://git.openjdk.java.net/jdk/pull/4738/files/c8be3be4..529fdcd4
Webrevs:
- full: https://webrevs.openjdk.java.net/?repo=jdk&pr=4738&range=04
- incr: https://webrevs.openjdk.java.net/?repo=jdk&pr=4738&range=03-04
Stats: 2 lines in 2 files changed: 0 ins; 0 del; 2 mod
Patch: https://git.openjdk.java.net/jdk/pull/4738.diff
Fetch: git fetch https://git.openjdk.java.net/jdk pull/4738/head:pull/4738
PR: https://git.openjdk.java.net/jdk/pull/4738
More information about the core-libs-dev
mailing list