RFR: 8341470: BigDecimal.stripTrailingZeros() optimization [v33]

Raffaello Giulietti rgiulietti at openjdk.org
Wed Oct 9 20:35:14 UTC 2024


On Wed, 9 Oct 2024 15:18:15 GMT, fabioromano1 <duke at openjdk.org> wrote:

>> An optimized algorithm for `BigDecimal.stripTrailingZeros()` that uses repeated squares trick.
>
> fabioromano1 has updated the pull request incrementally with one additional commit since the last revision:
> 
>   Store log5(2) in BigDecimal

Benchmarks

Current mainline (note that `testXL` takes about 4 minutes for about 1 million trailing zeros)

Benchmark                            Mode  Cnt             Score            Error  Units
BigDecimalStripTrailingZeros.testL   avgt   15     243184468.777 ?    5774928.564  ns/op
BigDecimalStripTrailingZeros.testM   avgt   15        178494.667 ?        745.774  ns/op
BigDecimalStripTrailingZeros.testS   avgt   15           414.158 ?          2.164  ns/op
BigDecimalStripTrailingZeros.testXL  avgt   15  245675728189.000 ? 2061221700.695  ns/op
BigDecimalStripTrailingZeros.testXS  avgt   15            29.788 ?          0.567  ns/op
Finished running test 'micro:java.math.BigDecimalStripTrailingZeros'



Current status of this PR (note that `testXL` takes about 0.5 seconds for about 1 million trailing zeros)

Benchmark                            Mode  Cnt          Score         Error  Units
BigDecimalStripTrailingZeros.testL   avgt   15    2726326.956 ?   18516.336  ns/op
BigDecimalStripTrailingZeros.testM   avgt   15       9336.508 ?      88.096  ns/op
BigDecimalStripTrailingZeros.testS   avgt   15        155.843 ?       1.448  ns/op
BigDecimalStripTrailingZeros.testXL  avgt   15  445180776.778 ? 1891719.217  ns/op
BigDecimalStripTrailingZeros.testXS  avgt   15         21.512 ?       0.387  ns/op
Finished running test 'micro:java.math.BigDecimalStripTrailingZeros'

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

PR Comment: https://git.openjdk.org/jdk/pull/21323#issuecomment-2403376022


More information about the core-libs-dev mailing list