RFR: 8331907: BigInteger and BigDecimal should use optimized division
    Daniel Jeliński 
    djelinski at openjdk.org
       
    Wed May  8 08:32:22 UTC 2024
    
    
  
On Wed, 8 May 2024 08:19:54 GMT, Daniel Jeliński <djelinski at openjdk.org> wrote:
> Replace the custom unsigned divide / remainder functions with the compiler-optimized Long.divideUnsigned / remainderUnsigned.
> 
> No new tests. Existing tier1-3 tests continue to pass.
> 
> I added a new set of divide benchmarks. Results in thread.
> 
> I also removed the BigDecimal.toString benchmarks. They no longer serve their purpose - toString caches the returned value, so we were only benchmarking the cache access time.
Results before:
Benchmark                                   Mode  Cnt    Score   Error  Units
BigDecimals.testHugeLargeDivide             avgt   15  115.176 ± 0.965  ns/op
BigDecimals.testHugeSmallDivide             avgt   15   82.652 ± 0.601  ns/op
BigDecimals.testLargeSmallDivide            avgt   15    6.601 ± 0.320  ns/op
BigIntegers.testHugeLargeDivide             avgt   15   53.905 ± 0.734  ns/op
BigIntegers.testHugeSmallDivide             avgt   15   52.762 ± 0.354  ns/op
BigIntegers.testLargeSmallDivide            avgt   15   22.990 ± 0.058  ns/op
after:
Benchmark                                   Mode  Cnt    Score   Error  Units
BigDecimals.testHugeLargeDivide             avgt   15  106.549 ± 0.695  ns/op
BigDecimals.testHugeSmallDivide             avgt   15   68.339 ± 0.172  ns/op
BigDecimals.testLargeSmallDivide            avgt   15    6.594 ± 0.328  ns/op
BigIntegers.testHugeLargeDivide             avgt   15   29.576 ± 0.411  ns/op
BigIntegers.testHugeSmallDivide             avgt   15   30.072 ± 0.242  ns/op
BigIntegers.testLargeSmallDivide            avgt   15    8.034 ± 0.078  ns/op
-------------
PR Comment: https://git.openjdk.org/jdk/pull/19134#issuecomment-2100030115
    
    
More information about the core-libs-dev
mailing list