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