RFR: 8337279: Optimize format instant [v3]
Stephen Colebourne
scolebourne at openjdk.org
Sun Aug 11 10:01:38 UTC 2024
On Sun, 28 Jul 2024 15:52:03 GMT, Shaojin Wen <duke at openjdk.org> wrote:
>> By removing the redundant code logic in DateTimeFormatterBuilder$InstantPrinterParser#formatTo, the codeSize can be reduced and the performance can be improved.
>
> Shaojin Wen has updated the pull request incrementally with one additional commit since the last revision:
>
> 1. fix handle fraction == -1
> 2. Split two methods to make codeSize less than 325
I'm still skeptical of some parts of this PR as it makes the code harder to folow. The new tests are a good addition and should be merged.
Have you tried the performance of simply breaking out the currentEra/beforeCurrentEra methods *without making any other changes*? Since the logic to produce the nano fraction is going to stay in this method, I don't really see the advantage in trying to get LocalDateTime to do the fraction some of the time.
src/java.base/share/classes/java/time/format/DateTimeFormatterBuilder.java line 3818:
> 3816: if (fractionalDigits == 0) {
> 3817: inNano = 0;
> 3818: }
Suggestion:
if (fractionalDigits == 0) {
inNano = 0;
}
boolean printNanoInLocalDateTime = fractionalDigits == -2
|| (inNano == 0 && (fractionalDigits == 0 || fractionalDigits == -1));
-------------
PR Review: https://git.openjdk.org/jdk/pull/20353#pullrequestreview-2231779313
PR Review Comment: https://git.openjdk.org/jdk/pull/20353#discussion_r1712950065
More information about the core-libs-dev
mailing list