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

fabioromano1 duke at openjdk.org
Wed Oct 9 16:06:09 UTC 2024


On Wed, 9 Oct 2024 15:46:37 GMT, Raffaello Giulietti <rgiulietti at openjdk.org> wrote:

>> @rgiulietti 
>> - About powers of two, there is a difference here: all powers of two are removed, not only the common, to use numbers as small as possible, and the powers are removed all in once, while if not they were removed at each division and also in the divisor, which is a power of 10, slowing the time of every iteration.
>> - About `bigTenToThe()`: its shortcoming is that the powers are calculated multiplying by 10 each time, rather than using repeated squares trick, until the cache is completely filled.
>> 
>> These are the main reasons why I decided not to use `bigTenToThe()`.
>
> Oh right, `expandBigIntegerTenPowers()` indeed computes and stores a lot of values.
> 
> I'm thinking of opening an issue to rewrite it to just keep the values that are actually computed as intermediate results of a repeated squaring implementation.

@rgiulietti BTW of opening new issues, I've found that there are some optimizations and code simplifications that can be done in `BigInteger`'s bit operations that uses lowest non-zero word search, like `shiftRight()`, `getLowestSetBit()`, `bitLength()` and `bitCount()`.

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

PR Review Comment: https://git.openjdk.org/jdk/pull/21323#discussion_r1793787866


More information about the core-libs-dev mailing list