On Mon, 28 Jul 2025 17:10:13 GMT, Philippe Marschall <d...@openjdk.org> wrote:

>> 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.0...
>
> Philippe Marschall has updated the pull request incrementally with one 
> additional commit since the last revision:
> 
>   Fix copyright year

The changes look good to me. I'd like one additional review as I have been 
involved in the loop on this one.

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

Marked as reviewed by pminborg (Reviewer).

PR Review: https://git.openjdk.org/jdk/pull/26493#pullrequestreview-3091460493

Reply via email to