On Tue, 18 Nov 2025 12:26:41 GMT, Maurizio Cimadamore <[email protected]> 
wrote:

>> Igor Rudenko has updated the pull request incrementally with one additional 
>> commit since the last revision:
>> 
>>   improvements according to reviewer comments
>
> The fundamental issue here is that `checkIndex` takes a bi-function for the 
> exception generation. This forces client to resort to _instance_ methods if 
> they want to embed more of their state description into the generated 
> message. And this requires allocation -- which fundamentally is against the 
> performance goals of the check bound routines in AbstractMemorySegmentImpl.
> 
> It would be better if Preconditions had more primitive, non-throwing variants 
> which just returned true/false. Then we could easily implement whatever logic 
> we wanted on top. Maybe we should look there first, and then come back to 
> improve messages in the FFM API?

@mcimadamore 
I measured some benchmarks

**master**:

Benchmark                                                (asTypeCompiled)  
(polluteProfile)  Mode  Cnt  Score    Error  Units
LoopOverNonConstant.BB_get                                            N/A       
        N/A  avgt   30  0.893 ±  0.004  ns/op
LoopOverNonConstant.BB_loop                                           N/A       
        N/A  avgt   30  0.243 ±  0.002  ms/op
LoopOverNonConstant.segment_get                                       N/A       
        N/A  avgt   30  0.997 ±  0.006  ns/op
LoopOverNonConstant.segment_loop                                      N/A       
        N/A  avgt   30  0.236 ±  0.001  ms/op
LoopOverNonConstant.segment_loop_instance                             N/A       
        N/A  avgt   30  0.237 ±  0.007  ms/op
LoopOverNonConstant.segment_loop_instance_index                       N/A       
        N/A  avgt   30  0.233 ±  0.001  ms/op
LoopOverNonConstant.segment_loop_instance_unaligned                   N/A       
        N/A  avgt   30  0.231 ±  0.001  ms/op
LoopOverNonConstant.segment_loop_nested                               N/A       
        N/A  avgt   30  0.232 ±  0.002  ms/op
LoopOverNonConstant.segment_loop_nested_unaligned                     N/A       
        N/A  avgt   30  0.231 ±  0.001  ms/op
LoopOverNonConstant.segment_loop_readonly                             N/A       
        N/A  avgt   30  0.229 ±  0.001  ms/op
LoopOverNonConstant.segment_loop_slice                                N/A       
        N/A  avgt   30  0.230 ±  0.001  ms/op
LoopOverNonConstant.segment_loop_unaligned                            N/A       
        N/A  avgt   30  0.229 ±  0.001  ms/op
LoopOverNonConstant.unsafe_get                                        N/A       
        N/A  avgt   30  0.452 ±  0.007  ns/op
LoopOverNonConstant.unsafe_loop                                       N/A       
        N/A  avgt   30  0.230 ±  0.002  ms/op


**1095cf6**:

Benchmark                                                (asTypeCompiled)  
(polluteProfile)  Mode  Cnt  Score    Error  Units
LoopOverNonConstant.BB_get                                            N/A       
        N/A  avgt   30  0.802 ±  0.007  ns/op
LoopOverNonConstant.BB_loop                                           N/A       
        N/A  avgt   30  0.223 ±  0.001  ms/op
LoopOverNonConstant.segment_get                                       N/A       
        N/A  avgt   30  0.932 ±  0.007  ns/op
LoopOverNonConstant.segment_loop                                      N/A       
        N/A  avgt   30  0.226 ±  0.002  ms/op
LoopOverNonConstant.segment_loop_instance                             N/A       
        N/A  avgt   30  0.226 ±  0.002  ms/op
LoopOverNonConstant.segment_loop_instance_index                       N/A       
        N/A  avgt   30  0.228 ±  0.004  ms/op
LoopOverNonConstant.segment_loop_instance_unaligned                   N/A       
        N/A  avgt   30  0.226 ±  0.001  ms/op
LoopOverNonConstant.segment_loop_nested                               N/A       
        N/A  avgt   30  0.224 ±  0.001  ms/op
LoopOverNonConstant.segment_loop_nested_unaligned                     N/A       
        N/A  avgt   30  0.223 ±  0.001  ms/op
LoopOverNonConstant.segment_loop_readonly                             N/A       
        N/A  avgt   30  0.225 ±  0.001  ms/op
LoopOverNonConstant.segment_loop_slice                                N/A       
        N/A  avgt   30  0.226 ±  0.002  ms/op
LoopOverNonConstant.segment_loop_unaligned                            N/A       
        N/A  avgt   30  0.224 ±  0.001  ms/op
LoopOverNonConstant.unsafe_get                                        N/A       
        N/A  avgt   30  0.434 ±  0.007  ns/op
LoopOverNonConstant.unsafe_loop                                       N/A       
        N/A  avgt   30  0.223 ±  0.001  ms/op


<img width="1670" height="1322" alt="Screenshot 2025-11-18 at 17 03 32" 
src="https://github.com/user-attachments/assets/9f117a08-0e1d-4858-960e-36b19142ae92";
 />

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

PR Comment: https://git.openjdk.org/jdk/pull/28124#issuecomment-3548049574

Reply via email to