harmony-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Hudson (JIRA)" <j...@apache.org>
Subject [jira] Commented: (HARMONY-6362) Logging performance improvements
Date Fri, 06 Nov 2009 18:58:32 GMT

    [ https://issues.apache.org/jira/browse/HARMONY-6362?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12774368#action_12774368

Hudson commented on HARMONY-6362:

Integrated in Harmony-1.5-head-linux-x86_64 #535 (See [http://hudson.zones.apache.org/hudson/job/Harmony-1.5-head-linux-x86_64/535/])
    Fixing loggers to load handlers eagerly and track them with a CopyOnWriteArrayList. This
improves performance and fixes a bug in our current implementation. A test for the bug is
included; performance metrics are available in this JIRA:
The change to CopyOnWriteArrayList also fixes some concurrency problems. Finally, I've addressed
some minor readability issues. I intend to separate style from substance in forthcoming CLs...

> Logging performance improvements
> --------------------------------
>                 Key: HARMONY-6362
>                 URL: https://issues.apache.org/jira/browse/HARMONY-6362
>             Project: Harmony
>          Issue Type: Improvement
>          Components: Classlib
>         Environment: SVN Revision: 829932
>            Reporter: Jesse Wilson
>            Priority: Minor
>   Original Estimate: 120h
>  Remaining Estimate: 120h
> The logging module performs more synchronization and object allocation than necessary.
In particular, getHandlers() always needs synchronization and creates an array. By adopting
util.concurrent features (CopyOnWriteArrayList) and coding to the common case (when there
are zero handlers) I saw a 2.5x improvement in throughput for calls to logger.log(Level, String).
In a benchmark that measures calls to "logger.info", call time improved from 385000ns to 154000ns
per message.
> Here's an overview of the patch:
>  - Reduce the use of synchronization by adopting a CopyOnWriteArrayList for Handlers
>  - Reduce object creation by reusing a 0-length handlers array in getHandlers()
>  - Load handlers on logger creation rather than on receipt of the first message. This
also fixes a behavioural inconsistency with the RI. I've got a test case that demonstrates
>  - Cleanup synchronization by moving methods with "synchronized (LogManager.getManager())"
blocks to the LogManager class
> I've got the patch ready to submit upstream. I'll submit it when my commit privileges
are granted, unless anyone raises objections here.

This message is automatically generated by JIRA.
You can reply to this email to add a comment to the issue online.

View raw message