RFR: 8289908: Skip bounds check for cases when String is constructed from entirely used byte[] [v2]
Сергей Цыпанов
duke at openjdk.org
Mon Jul 11 08:07:28 UTC 2022
> 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 three additional commits since the last revision:
- 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[]
-------------
Changes:
- all: https://git.openjdk.org/jdk/pull/9407/files
- new: https://git.openjdk.org/jdk/pull/9407/files/567727e9..294e91f7
Webrevs:
- full: https://webrevs.openjdk.org/?repo=jdk&pr=9407&range=01
- incr: https://webrevs.openjdk.org/?repo=jdk&pr=9407&range=00-01
Stats: 11699 lines in 1295 files changed: 3911 ins; 1617 del; 6171 mod
Patch: https://git.openjdk.org/jdk/pull/9407.diff
Fetch: git fetch https://git.openjdk.org/jdk pull/9407/head:pull/9407
PR: https://git.openjdk.org/jdk/pull/9407
More information about the core-libs-dev
mailing list