> Use `JavaLangAccess::uncheckedNewStringNoRepl` in `MemorySegment::getString` > to avoid byte[] allocation in the String constructor. > > Fall back to the old code in the case of malformed input to get replacement > characters as per Javadoc API specification. The existing tests in > `TestStringEncoding` seem sufficient to me. > > I ran the tier1 test suite and it passes. > > For performance analysis I ran. > > make test > TEST="micro:org.openjdk.bench.java.lang.foreign.ToJavaStringTest" > MICRO="OPTIONS=-prof gc" > > on an AMD Ryzen 7 PRO 5750GE. > > These are the formatted results, the current master is the line on top, this > feature branch is the line below. We can see an improvement in throughput > driven by a reduction in allocation. > > > Benchmark (size) Mode Cnt > Score Error Units > > ToJavaStringTest.panama_readString 5 avgt 30 > 18.996 ± 0.044 ns/op > ToJavaStringTest.panama_readString 5 avgt 30 > 13.851 ± 0.028 ns/op > > ToJavaStringTest.panama_readString 20 avgt 30 > 23.570 ± 0.050 ns/op > ToJavaStringTest.panama_readString 20 avgt 30 > 18.401 ± 0.069 ns/op > > ToJavaStringTest.panama_readString 100 avgt 30 > 32.094 ± 0.207 ns/op > ToJavaStringTest.panama_readString 100 avgt 30 > 24.427 ± 0.112 ns/op > > ToJavaStringTest.panama_readString 200 avgt 30 > 43.029 ± 0.185 ns/op > ToJavaStringTest.panama_readString 200 avgt 30 > 31.914 ± 0.064 ns/op > > ToJavaStringTest.panama_readString 451 avgt 30 > 81.145 ± 0.403 ns/op > ToJavaStringTest.panama_readString 451 avgt 30 > 58.975 ± 0.233 ns/op > > ToJavaStringTest.panama_readString:gc.alloc.rate.norm 5 avgt 30 > 72.000 ± 0.001 B/op > ToJavaStringTest.panama_readString:gc.alloc.rate.norm 5 avgt 30 > 48.000 ± 0.001 B/op > > ToJavaStringTest.panama_readString:gc.alloc.rate.norm 20 avgt 30 > 104.000 ± 0.001 B/op > ToJavaStringTest.panama_readString:gc.alloc.rate.norm 20 avgt 30 > 64.000 ± 0.001 B/op > > ToJavaStringTest.panama_readString:gc.alloc.rate.norm 100 avgt 30 > 264.000 ± 0.001 B/op > ToJavaStringTest.panama_readString:gc.alloc.rate.norm 100 avgt 30 > 144.000 ± 0.001 B/op > > ToJavaStringTest.panama_readString:gc.alloc.rate.norm 200 avgt ...
Philippe Marschall has updated the pull request incrementally with one additional commit since the last revision: Fix copyright year ------------- Changes: - all: https://git.openjdk.org/jdk/pull/26493/files - new: https://git.openjdk.org/jdk/pull/26493/files/24a83a5b..130ad859 Webrevs: - full: https://webrevs.openjdk.org/?repo=jdk&pr=26493&range=01 - incr: https://webrevs.openjdk.org/?repo=jdk&pr=26493&range=00-01 Stats: 1 line in 1 file changed: 0 ins; 0 del; 1 mod Patch: https://git.openjdk.org/jdk/pull/26493.diff Fetch: git fetch https://git.openjdk.org/jdk.git pull/26493/head:pull/26493 PR: https://git.openjdk.org/jdk/pull/26493