On Tue, 29 Apr 2025 17:00:25 GMT, Raffaello Giulietti <rgiulie...@openjdk.org> 
wrote:

>> fabioromano1 has updated the pull request incrementally with two additional 
>> commits since the last revision:
>> 
>>  - Adjust the type of operand
>>  - Use a more loose formula to do range check
>>    
>>    Use a more loose formula to do range check, in order not to exclude a 
>> priori values that may be inside the supported range
>
> I must have screwed up something in my previous benchmarks, probably when 
> copying the master branch (current) `BigInteger` into the PR branch for the 
> "before" figures.
> 
> Here's indeed a more favorable picture (but certainly not a 50% enhancement 
> in allocation rate).
> I obtain comparable results with more iterations (`make test 
> TEST="micro:java.math.BigIntegerPow" 
> MICRO="WARMUP_ITER=3;ITER=3;OPTIONS=-prof gc"`).
> 
> I'll delete my previous misleading results.
> Sorry for the noise.
> 
> macOS 15.4.1 / M1 Pro / 32 GiB / java 25-internal
> 
> _before_
> 
> Benchmark                                   Mode  Cnt            Score        
>    Error   Units
> BigIntegerPow.testPowL                      avgt    3   7828857180.333 ± 
> 723831405.464   ns/op
> BigIntegerPow.testPowL:gc.alloc.rate        avgt    3         4766.633 ±      
>  440.607  MB/sec
> BigIntegerPow.testPowL:gc.alloc.rate.norm   avgt    3  39130646080.000 ±      
>    0.001    B/op
> BigIntegerPow.testPowL:gc.count             avgt    3          260.000        
>           counts
> BigIntegerPow.testPowL:gc.time              avgt    3          190.000        
>               ms
> BigIntegerPow.testPowM                      avgt    3   7784905013.667 ± 
> 751070238.685   ns/op
> BigIntegerPow.testPowM:gc.alloc.rate        avgt    3         4737.671 ±      
>  455.843  MB/sec
> BigIntegerPow.testPowM:gc.alloc.rate.norm   avgt    3  38674111834.667 ±      
>  337.057    B/op
> BigIntegerPow.testPowM:gc.count             avgt    3          257.000        
>           counts
> BigIntegerPow.testPowM:gc.time              avgt    3          192.000        
>               ms
> BigIntegerPow.testPowS                      avgt    3   7615946041.333 ± 
> 505408224.968   ns/op
> BigIntegerPow.testPowS:gc.alloc.rate        avgt    3         4622.726 ±      
>  306.660  MB/sec
> BigIntegerPow.testPowS:gc.alloc.rate.norm   avgt    3  36917399656.000 ±      
>    0.001    B/op
> BigIntegerPow.testPowS:gc.count             avgt    3          246.000        
>           counts
> BigIntegerPow.testPowS:gc.time              avgt    3          184.000        
>               ms
> BigIntegerPow.testPowXL                     avgt    3   7806063305.667 ± 
> 841981680.300   ns/op
> BigIntegerPow.testPowXL:gc.alloc.rate       avgt    3         4795.153 ±      
>  515.480  MB/sec
> BigIntegerPow.testPowXL:gc.alloc.rate.norm  avgt    3  39249581269.333 ±      
>  337.057    B/op
> BigIntegerPow.testPowXL:gc.count            avgt    3          261.000        
>           counts
> BigIntegerPow.testPowXL:gc.time             avgt    3      ...

> @rgiulietti Although there could be no significant differences, the method to 
> compute powers of longs could be useful, since it is used both by 
> BigInteger.pow() and the possible implementation of nth root, so this PR 
> might not be thrown away, or at least not completely.

Please keep going...

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

PR Comment: https://git.openjdk.org/jdk/pull/24690#issuecomment-2839626328

Reply via email to