On Tue, 14 Oct 2025 23:26:00 GMT, Shaojin Wen <[email protected]> wrote:

> This PR refactors the Double.toHexString method to improve its performance by 
> eliminating the use of StringBuilder and regex operations. The new 
> implementation uses a direct byte array approach to construct the hex string 
> representation, which avoids the overhead of StringBuilder operations and 
> regex pattern matching.
> 
> Existing tests in `java/lang/Double/ToHexString.java`.

The existing regression tests may be adequate for this refactoring as the 
high-level algorithm and special cases are similar, but I'll want to take 
another look before approving this PR. Thanks.

src/java.base/share/classes/java/lang/Double.java line 731:

> 729:                 // This is used to remove trailing zeros from the hex 
> representation
> 730:                 // We limit to 12 because we want to keep at least 1 hex 
> digit (13 total - 12 = 1)
> 731:                 int trailingZeros = Math.min(12, 
> ((Long.numberOfTrailingZeros(signifBits) & 0xFC) >> 2));

Some additional discussion of the computation here would be helpful to casual 
readers.

I would also be tempted to add

assert 0 <= trailingZeros && trailingZeros <= 12;

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

PR Comment: https://git.openjdk.org/jdk/pull/27811#issuecomment-3420526051
PR Review Comment: https://git.openjdk.org/jdk/pull/27811#discussion_r2443797708

Reply via email to