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