On Fri, 5 Sep 2025 14:18:19 GMT, Johannes Graham <[email protected]> wrote:

> When formatting doubles or BigDecimals, DigitList first formats them as a 
> string and then parses the resultant string to extract the mantissa and the 
> exponent. This can be done more directly. This allows removing some parsing 
> code and removes a cached byte array.
> 
> This also facilitates potential cleanups in FloatingDecimal (removal of 
> getChars method) but I've left that for later to minimize conflicts with 
> other changes there.

@rgiulietti This requires the use of the `getDigits` and `getDecimalExponent` 
methods in `FloatingDecimal`, which are proposed to be removed in 
https://github.com/openjdk/jdk/pull/26990

Benchmark results Aarch64 M4


Benchmark                                              Mode  Cnt      Score     
Error   Units
-DefFormatterBench.testDefNumberFormatter             thrpt   15  15612.853 ± 
448.025  ops/ms
-DefFormatterBench.testLargeBigDecDefNumberFormatter  thrpt   15   4075.254 ±  
58.170  ops/ms
-DefFormatterBench.testSmallBigDecDefNumberFormatter  thrpt   15  12467.137 ± 
194.961  ops/ms
+DefFormatterBench.testDefNumberFormatter             thrpt   15  19196.464 ± 
475.871  ops/ms  +26%
+DefFormatterBench.testLargeBigDecDefNumberFormatter  thrpt   15   4981.756 ±  
82.088  ops/ms  +22%
+DefFormatterBench.testSmallBigDecDefNumberFormatter  thrpt   15  15936.774 ± 
108.450  ops/ms  +28%
Finished running test 'micro:DefFormatterBench'


This includes adding a fast-path in BigInteger.toString to help extract 
significant digits from a BigDecimal without a slowdown.

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

PR Comment: https://git.openjdk.org/jdk/pull/27118#issuecomment-3258587899
PR Comment: https://git.openjdk.org/jdk/pull/27118#issuecomment-3267017431

Reply via email to