Uploaded image for project: 'JDK'
  1. JDK
  2. JDK-8327429

String Template FMT built-in optimization for DateTimes

XMLWordPrintable

    • Icon: Enhancement Enhancement
    • Resolution: Unresolved
    • Icon: P4 P4
    • None
    • None
    • core-libs
    • None

      Goal
      Improve String Template FMT's processing performance of date types. Currently, FMT processes date types by toString and then calls j.u.Formatter#print. Because there is less parse processing than String.format, the performance is improved, but it is still not good enough. There is an intermediate String object allocation, and the print performance of j.u.Formatter is not as good as The StringConcat.prepend method is great.

      This patch allows String Template FMT to handle Date/Instant/LocalDate/LocalTime/LocalDateTime/OffsetTime/OffsetDateTime/ZonedDateTime/Instant types with optimization, just like int/long/float/double/String.

      Optimized type and Specifier combinations

      * java.util.Date
      ```
      %s
      %tc (Sat Nov 04 12:02:33 EST 1999)
      %tD DATE (mm/dd/yy)
      %tF ISO_STANDARD_DATE (%Y-%m-%d)
      %tT TIME (24 hour hh:mm:ss)
      %tR TIME_24_HOUR hh:mm same as %H:%M
      %tr TIME_12_HOUR (hh:mm:ss [AP]M)
      ```

      * LocalDate
      ```
      %s
      %tD DATE (mm/dd/yy)
      %tF ISO_STANDARD_DATE (%Y-%m-%d)
      ```

      * LocalDateTime
      ```
      %s
      %tD DATE (mm/dd/yy)
      %tF ISO_STANDARD_DATE (%Y-%m-%d)
      %tT TIME (24 hour hh:mm:ss)
      %tR TIME_24_HOUR hh:mm same as %H:%M
      %tr TIME_12_HOUR (hh:mm:ss [AP]M)
      ```

      * OffsetDateTime
      ```
      %s
      %tD DATE (mm/dd/yy)
      %tF ISO_STANDARD_DATE (%Y-%m-%d)
      %tT TIME (24 hour hh:mm:ss)
      %tR TIME_24_HOUR hh:mm same as %H:%M
      %tr TIME_12_HOUR (hh:mm:ss [AP]M)
      ```

      * ZonedDateTime
      ```
      %s
      %tD DATE (mm/dd/yy)
      %tF ISO_STANDARD_DATE (%Y-%m-%d)
      %tT TIME (24 hour hh:mm:ss)
      %tR TIME_24_HOUR hh:mm same as %H:%M
      %tr TIME_12_HOUR (hh:mm:ss [AP]M)
      ```

      * LocalTime
      ```
      %s
      %tT TIME (24 hour hh:mm:ss)
      %tR TIME_24_HOUR hh:mm same as %H:%M
      %tr TIME_12_HOUR (hh:mm:ss [AP]M)
      ```

      * OffsetTime
      ```
      %s
      %tT TIME (24 hour hh:mm:ss)
      %tR TIME_24_HOUR hh:mm same as %H:%M
      %tr TIME_12_HOUR (hh:mm:ss [AP]M)
      ```

      * Instant
      ```
      %s
      ```

            swen Shaojin Wen
            swen Shaojin Wen
            Votes:
            1 Vote for this issue
            Watchers:
            3 Start watching this issue

              Created:
              Updated: