[jboss-jira] [JBoss JIRA] (LOGMGR-157) Provide faster alternative to SimpleDataFormat
Koen Janssens (JIRA)
issues at jboss.org
Wed May 17 04:36:02 EDT 2017
[ https://issues.jboss.org/browse/LOGMGR-157?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Koen Janssens updated LOGMGR-157:
---------------------------------
Attachment: DateFormatPerformance.java
> Provide faster alternative to SimpleDataFormat
> ----------------------------------------------
>
> Key: LOGMGR-157
> URL: https://issues.jboss.org/browse/LOGMGR-157
> Project: JBoss Log Manager
> Issue Type: Enhancement
> Components: core
> Affects Versions: 2.0.6.Final
> Reporter: Koen Janssens
> Attachments: DateFormatPerformance.java
>
>
> Whenever a data or timestamp is included in the logging pattern, SimpleDataFormat is used for formatting. Even with one instance per thread, it is still a heavy beast.
> Other logging libraries (like the 15 year old log4j) have 'fast tracks' for known formats such as ISO 8601. These implementations are faster and generate less memory garbage.
> During profiling, i discovered that simpledateformat is doing a lot of stuff while printing a date:
> at java.lang.Thread.run(Thread.java:748)
> at org.jboss.logmanager.handlers.AsyncHandler$AsyncTask.run(AsyncHandler.java:196)
> at org.jboss.logmanager.ExtHandler.publish(ExtHandler.java:76)
> at org.jboss.logmanager.handlers.WriterHandler.doPublish(WriterHandler.java:46)
> at org.jboss.logmanager.ExtFormatter.format(ExtFormatter.java:32)
> at org.jboss.logmanager.formatters.MultistepFormatter.format(MultistepFormatter.java:83)
> at org.jboss.logmanager.formatters.Formatters$JustifyingFormatStep.render(Formatters.java:224)
> at org.jboss.logmanager.formatters.Formatters$5.renderRaw(Formatters.java:389)
> at java.text.DateFormat.format(DateFormat.java:345)
> at java.text.SimpleDateFormat.format(SimpleDateFormat.java:936)
> at java.text.SimpleDateFormat.format(SimpleDateFormat.java:966)
> at java.text.SimpleDateFormat.subFormat(SimpleDateFormat.java:1125)
> at java.util.Calendar.getDisplayName(Calendar.java:2110)
> at java.text.DateFormatSymbols.getInstance(DateFormatSymbols.java:340)
> at java.text.DateFormatSymbols.getProviderInstance(DateFormatSymbols.java:364)
> at sun.util.locale.provider.DateFormatSymbolsProviderImpl.getInstance(DateFormatSymbolsProviderImpl.java:85)
> at java.text.DateFormatSymbols.<init>(DateFormatSymbols.java:145)
> at java.text.DateFormatSymbols.initializeData(DateFormatSymbols.java:710)
> at sun.util.resources.LocaleData.getDateFormatData(LocaleData.java:127)
> at sun.util.resources.LocaleData.getBundle(LocaleData.java:163)
> at java.security.AccessController.doPrivileged(Native Method)
> at sun.util.resources.LocaleData$1.run(LocaleData.java:163)
> at sun.util.resources.LocaleData$1.run(LocaleData.java:167)
> at java.util.ResourceBundle.getBundle(ResourceBundle.java:890)
> at java.util.ResourceBundle.getBundleImpl(ResourceBundle.java:1348)
> at java.util.ResourceBundle.checkList(ResourceBundle.java:1400)
> at java.util.Collections$UnmodifiableCollection.isEmpty(Collections.java:1031)
> at java.util.AbstractCollection.isEmpty(AbstractCollection.java:86)
> I have attached a small comparision between simpledateformat performance and log4j ISO formatting performance. It roughly a factor 10 'faster'
--
This message was sent by Atlassian JIRA
(v7.2.3#72005)
More information about the jboss-jira
mailing list