<i18n dev> RFR: 8349189: Speed up DateTime parse & format via Class File API

Shaojin Wen swen at openjdk.org
Sun Feb 2 17:37:43 UTC 2025


By using the Class File API to dynamically generate a CompositePrinterParser, and defining DateTimePrinterParser[] printerParsers as a specific field, C2 can do TypeProfile optimization.

Since the CompositePrinterParser is generated based on the pattern, we can make the following optimizations:

1. For example, for the parse and print of Month/DayOfMonth/Hour/Minute/Second with a fixed length of 2, do targeted parse and print optimization.

2. Parse uses LocalDate/LocalTime/LocalDateTime/OffsetDateTime for TemporalQuery to avoid the overhead of constructing DateTimeParseContext.

These optimizations can significantly improve performance, with more than 100% performance improvement in many scenarios.

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

Commit messages:
 - code style
 - simplify & code style
 - fix comment
 - fix comment
 - support OffsetTime
 - fix comments
 - optimize parseOffsetDateTime
 - optimize nano3
 - Generate PrinterParser using bytecode
 - add benchmark

Changes: https://git.openjdk.org/jdk/pull/23384/files
  Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=23384&range=00
  Issue: https://bugs.openjdk.org/browse/JDK-8349189
  Stats: 1687 lines in 9 files changed: 1543 ins; 88 del; 56 mod
  Patch: https://git.openjdk.org/jdk/pull/23384.diff
  Fetch: git fetch https://git.openjdk.org/jdk.git pull/23384/head:pull/23384

PR: https://git.openjdk.org/jdk/pull/23384


More information about the i18n-dev mailing list