-
Enhancement
-
Resolution: Unresolved
-
P4
-
None
-
None
-
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
```
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
```
- links to
-
Review openjdk/jdk/16044