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

Reply via email to