> 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 six additional commits since the last revision: - 8289908: Rework constructor - Merge branch 'master' into 8289908 - 8289908: Fixed tests - 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/b7375cd3..f653a67b Webrevs: - full: https://webrevs.openjdk.org/?repo=jdk&pr=9407&range=03 - incr: https://webrevs.openjdk.org/?repo=jdk&pr=9407&range=02-03 Stats: 62100 lines in 564 files changed: 33281 ins; 20833 del; 7986 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