Withdrawn: 8327429: String Template FMT built-in optimization for DateTimes
Shaojin Wen
duke at openjdk.org
Fri Apr 19 18:10:04 UTC 2024
On Wed, 4 Oct 2023 22:30:42 GMT, Shaojin Wen <duke at openjdk.org> wrote:
> # 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
>
>
> # Performance Numbers
> run on MacBook M1 Pro
>
> -Benchmark Mode Cnt Score Error Units (baseline)
> -StringTemplateFMT.dateFormat avgt 15 66.601 ? 0.863 ns/op
> -StringTemplateFMT.instantFormat avgt 15 198.284 ? 5.804 ns/op
> -StringTemplateFMT.ldtFormat avgt 15 103.625 ? 6.315 ns/op
> -StringTemplateFMT.localTimeFormat avgt 15 44.750 ? 0.219 ns/op
> -StringTemplateFMT.zdtFormat avgt 15 179.140 ? 8.379 ns/op
>
> +Benchmark Mode Cnt Score Error Units (optimized)
> +StringTemplateFMT.dateFormat avgt 15 29.425 ? 0.510 ns/op (+126.35)
> +StringTemplateFMT.instantFormat avgt 15 36.467 ? 0.114 ns/op ...
This pull request has been closed without being integrated.
-------------
PR: https://git.openjdk.org/jdk/pull/16044
More information about the core-libs-dev
mailing list