[logback-dev] [JIRA] Commented: (LBCLASSIC-36) Synchronization of SimpleDateFormat object in DateConverter

Joern Huxhorn (JIRA) noreply-jira at qos.ch
Wed Jun 17 11:28:10 CEST 2009

    [ http://jira.qos.ch/browse/LBCLASSIC-36?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=11194#action_11194 ] 

Joern Huxhorn commented on LBCLASSIC-36:

Hi guys,

I've just changed the TestDateFormatOriginal due to LBGENERAL-29.
Instead of Date or DateTime a long is now used. This is a better representation of our problem, I think, since LoggingEvent contains the plain long and a new Date has to be created for SimpleDateFormat.

My changes are contained in the patch for LBGENERAL-29.

Below are my numbers for the following environment:
Maven version: 2.0.10
Java version: 1.6.0_13
OS name: "mac os x" version: "10.5.7" arch: "x86_64" Family: "mac"

Running ch.qos.logback.classic.issue.lbclassic36.TestDateFormatOriginal
Raw - JDK: 3227 ns Joda: 5098 ns - Difference: -57.97955%
Synchronized DateFormat: 0.1453 seconds
Unsynchronized DateFormat: 1.3796 seconds
ThreadLocal DateFormat: 0.0954 seconds
Joda DateTimeFormatter: 0.0893 seconds

I guess the bad numbers in case of Raw are caused by HotSpot compilation at that time :p

> Synchronization of SimpleDateFormat object in DateConverter
> -----------------------------------------------------------
>                 Key: LBCLASSIC-36
>                 URL: http://jira.qos.ch/browse/LBCLASSIC-36
>             Project: logback-classic
>          Issue Type: Bug
>          Components: Other
>    Affects Versions: unspecified
>         Environment: Operating System: All
> Platform: All
>            Reporter: Anders Hammar
>            Assignee: Ceki Gulcu
>         Attachments: DateConverter_patch.java, DateFormatPerfTest.java, dateformattest.zip
> According to the API documentation of SimpleDateFormat, date formats are not synchronized and it is recommended to create separate format instances for each thread.
> However, a possibly simpler (mer efficient) solution would be to synchronize on the SimpleDateFormat object in the convert() method to prevent two threads to access it concurrently.

This message is automatically generated by JIRA.
If you think it was sent incorrectly contact one of the administrators: http://jira.qos.ch/secure/Administrators.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira


More information about the logback-dev mailing list