RFR: 8289908: Skip bounds check for cases when String is constructed from entirely used byte[]

Сергей Цыпанов duke at openjdk.org
Thu Jul 7 10:32:17 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

-------------

Commit messages:
 - 8289908: Skip bounds check for cases when String is constructed from entirely used byte[]

Changes: https://git.openjdk.org/jdk/pull/9407/files
 Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=9407&range=00
  Issue: https://bugs.openjdk.org/browse/JDK-8289908
  Stats: 90 lines in 5 files changed: 77 ins; 1 del; 12 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 security-dev mailing list