<i18n dev> RFR: 8367324: Avoid redundant parsing when formatting with DigitList [v2]

Justin Lu jlu at openjdk.org
Fri Sep 12 21:13:16 UTC 2025


On Wed, 10 Sep 2025 23:54:31 GMT, Johannes Graham <duke at openjdk.org> wrote:

>> src/java.base/share/classes/java/math/BigInteger.java line 4184:
>> 
>>> 4182: 
>>> 4183:         if (fitsIntoLong()) {
>>> 4184:             return Long.toString(longValue(), radix);
>> 
>> We may want to consider separating this `BigInteger` fast path from this PR/change, since it is independent of the speedup in the `DigitList` changes. Others may not have a problem with it though, so maybe we can wait and see what they say.
>
> Without the fast-path, there was a performance drop with the "small" BigDecimals (from memory about 10%). That's what drove me to tinker with `BigInteger.toString`. But if this one can stand on its own, despite the perf drop, I'm happy to separate out the BigInteger part. I'll generate some new perf numbers after the Level.Invocation fix.

OK understood. I think we would only want to go through with this PR if we could avoid that perf regression in the _DefFormatterBench.testSmallBigDecDefNumberFormatter_ case. So either including this BI fast path as part of this change, or (if there are scope concerns), making a separate change for it first and making this PR dependent on it seems reasonable to me. It would be good to get @rgiulietti's opinion on this.

I think it would also be good to include the _java.math.BigIntegers_ results since this change directly impacts those results as well. (Which look to have sizeable improvements for _BigIntegers.testSmallToString_  and _BigIntegers.testLargeToString_.)

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

PR Review Comment: https://git.openjdk.org/jdk/pull/27118#discussion_r2345424936


More information about the i18n-dev mailing list