<i18n dev> RFR: 8337279: Optimize format instant [v3]
Shaojin Wen
duke at openjdk.org
Sun Jul 28 17:09:31 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
@jodastephen thank you for your patience in answering my questions.
Now I've used a new way to implement it, splitting it into two sub-methods without changing the original logic, which also makes codeSize < 325, and the performance is also faster than before. Here are the performance numbers running on a MacBook M1 Pro:
- # master 5ff7c57f9ff5428ef3d2aedd7e860bb1e8ff29ea
-Benchmark Mode Cnt Score Error Units
-ToStringBench.instantToString thrpt 15 4.558 ? 0.561 ops/ms
+ # current 757984258257fd82c389f3ee7bd9be927375e2e0
+Benchmark Mode Cnt Score Error Units
+ToStringBench.instantToString thrpt 15 5.564 ? 0.465 ops/ms +22.07%
I also added relevant tests to prevent errors from being discovered in future related changes.
I hope to reuse LocalDateTime.toString for the most common paths, so that we can also use LocalDateTime.formatTo method, which can reduce object allocation.
I plan to continue to optimize the formatTo method of LocalTime and LocalDate, so that InstantPrinterParser.format can also benefit from it.
-------------
PR Comment: https://git.openjdk.org/jdk/pull/20353#issuecomment-2254582635
More information about the i18n-dev
mailing list