hadoop-common-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Doug Cutting (JIRA)" <j...@apache.org>
Subject [jira] Commented: (HADOOP-6884) Add LOG.isDebugEnabled() guard for each LOG.debug("...")
Date Thu, 19 Aug 2010 18:22:23 GMT

    [ https://issues.apache.org/jira/browse/HADOOP-6884?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12900390#action_12900390

Doug Cutting commented on HADOOP-6884:

>  I found at least two three-variable cases in Erik's latest patch.

I missed those, but it's still different from your benchmark, which focussed on boxed variables.
 Those examples might look something like:

debug("Exception while invoking {} of {}. Retrying.", method.getName(), implementation.getClass(),

That last parameter would make things slow, but, I'd be surprised if you can show that optimizing
this substantially improves Hadoop performance, since this only runs in the case that a retryable
method fails with an exception.  If we ever found that such cases were problematic, we might
add methods like:

static void debug(String message, Throwable t);
static void debug(String message, Throwable t, Object p1);
static void debug(String message, Throwable t, Object p1, Object p2);
static void debug(String message, Throwable t, Object... parameters);

Perhaps we could submit a patch to slf4j adding such methods there.

The second case could become something like:

debug("for protocol authorization compare ({}):{} with ", clientPrincipal, shortName, user.getShortUserName));

In this case all parameters are strings, so no boxing would occur.

> Your benchmark also shows that LOG.isDebugEnabled() provides the best results.

It provides significantly better results in a micro-benchmark.  But optimizations that increase
code size should show significant improvement in real application performance, not just micro-benchmarks.
 Until someone's shown that this optimization measurably improves end performance, I see no
urgency to commit it.

> Add LOG.isDebugEnabled() guard for each LOG.debug("...")
> --------------------------------------------------------
>                 Key: HADOOP-6884
>                 URL: https://issues.apache.org/jira/browse/HADOOP-6884
>             Project: Hadoop Common
>          Issue Type: Improvement
>    Affects Versions: 0.22.0
>            Reporter: Erik Steffl
>            Assignee: Erik Steffl
>             Fix For: 0.22.0
>         Attachments: FunAgain.java, FunAgain.java, HADOOP-6884-0.22-1.patch, HADOOP-6884-0.22.patch
> Each LOG.debug("...") should be executed only if LOG.isDebugEnabled() is true, in some
cases it's expensive to construct the string that is being printed to log. It's much easier
to always use LOG.isDebugEnabled() because it's easier to check (rather than in each case
reason whether it's necessary or not).

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

View raw message