Sangjin Lee wrote:
Thanks for pointing that out.  It was a mechanical search-and-replace.  I
also wasn't familiar with the capability of SLF4J in terms of evaluating
args.  I'll look at them again, and remove isXXXEnabled() calls.
You can keep the isXXXEnabled. It should not make a big difference. But Julien is right, when using the {} to pass arguments to the XXX.log( message, arg1...) the cost is almost the same than simply doing a ifXXXEnabled() {...}.

The ultimate optimization, considering that the logs will become static, would be to add a static with an evaluation of the log state :

private static final Logger LOG = LoggerFactory.getLogger( <your class>.class );

   /**
    * Speedup for logs
    */
   private static final boolean IS_DEBUG = LOG.isDebugEnabled();
...
   if ( IS_DEBUG ) {
       LOG.debug( blah );
   }

Doing so will allow the JVM to simply remove the test, as if DEBUG is not true, and as it's static, the optimizer will consider that the inner code will never be executed.

It might worth the extra effort for DEBUG, certainly not for warnings or errors.

My 2cts ...

Regards,
Sangjin


On Mon, Aug 4, 2008 at 11:23 PM, Julien Vermillard
<[EMAIL PROTECTED]>wrote:

Why using isTraceEnabled here ?
there is no concatenation and even if there was, we could use {} in slf4j
call.
if (LOG.isTraceEnabled()) {
    LOG.trace("enter
BasicScheme.authenticate(UsernamePasswordCredentials, String)");
}

Julien

2008/8/4  <[EMAIL PROTECTED]>:
Author: sjlee
Date: Mon Aug  4 12:46:17 2008
New Revision: 682480

URL: http://svn.apache.org/viewvc?rev=682480&view=rev
Log:
ASYNCWEB-24

Wrapped debug() and trace() calls with isDebugEnabled() and
isTraceEnabled() calls.  Also prefer StringBuilder over StringBuffer.
Modified:

 
mina/asyncweb/branches/1.0/client/src/main/java/org/apache/asyncweb/client/auth/AuthScope.java
mina/asyncweb/branches/1.0/client/src/main/java/org/apache/asyncweb/client/auth/AuthState.java mina/asyncweb/branches/1.0/client/src/main/java/org/apache/asyncweb/client/auth/BasicScheme.java mina/asyncweb/branches/1.0/client/src/main/java/org/apache/asyncweb/client/auth/DigestScheme.java mina/asyncweb/branches/1.0/client/src/main/java/org/apache/asyncweb/client/auth/NTCredentials.java mina/asyncweb/branches/1.0/client/src/main/java/org/apache/asyncweb/client/auth/NTLMScheme.java mina/asyncweb/branches/1.0/client/src/main/java/org/apache/asyncweb/client/auth/UsernamePasswordCredentials.java mina/asyncweb/branches/1.0/client/src/main/java/org/apache/asyncweb/client/codec/HttpDecoder.java mina/asyncweb/branches/1.0/client/src/main/java/org/apache/asyncweb/client/util/EncodingUtil.java mina/asyncweb/branches/1.0/client/src/main/java/org/apache/asyncweb/client/util/ParameterFormatter.java
Modified:
mina/asyncweb/branches/1.0/client/src/main/java/org/apache/asyncweb/client/auth/AuthScope.java
URL:
http://svn.apache.org/viewvc/mina/asyncweb/branches/1.0/client/src/main/java/org/apache/asyncweb/client/auth/AuthScope.java?rev=682480&r1=682479&r2=682480&view=diff
==============================================================================
---
mina/asyncweb/branches/1.0/client/src/main/java/org/apache/asyncweb/client/auth/AuthScope.java
(original)
+++
mina/asyncweb/branches/1.0/client/src/main/java/org/apache/asyncweb/client/auth/AuthScope.java
Mon Aug  4 12:46:17 2008
@@ -265,7 +265,7 @@
     * @see java.lang.Object#toString()
     */
    public String toString() {
-        StringBuffer buffer = new StringBuffer();
+        StringBuilder buffer = new StringBuilder();
        if (this.scheme != null) {
            buffer.append(this.scheme.toUpperCase());
            buffer.append(' ');

Modified:
mina/asyncweb/branches/1.0/client/src/main/java/org/apache/asyncweb/client/auth/AuthState.java
URL:
http://svn.apache.org/viewvc/mina/asyncweb/branches/1.0/client/src/main/java/org/apache/asyncweb/client/auth/AuthState.java?rev=682480&r1=682479&r2=682480&view=diff
==============================================================================
---
mina/asyncweb/branches/1.0/client/src/main/java/org/apache/asyncweb/client/auth/AuthState.java
(original)
+++
mina/asyncweb/branches/1.0/client/src/main/java/org/apache/asyncweb/client/auth/AuthState.java
Mon Aug  4 12:46:17 2008
@@ -155,7 +155,7 @@
    }

    public String toString() {
-        StringBuffer buffer = new StringBuffer();
+        StringBuilder buffer = new StringBuilder();
        buffer.append("Auth state: auth requested [");
        buffer.append(this.authRequested);
        buffer.append("]; auth attempted [");

Modified:
mina/asyncweb/branches/1.0/client/src/main/java/org/apache/asyncweb/client/auth/BasicScheme.java
URL:
http://svn.apache.org/viewvc/mina/asyncweb/branches/1.0/client/src/main/java/org/apache/asyncweb/client/auth/BasicScheme.java?rev=682480&r1=682479&r2=682480&view=diff
==============================================================================
---
mina/asyncweb/branches/1.0/client/src/main/java/org/apache/asyncweb/client/auth/BasicScheme.java
(original)
+++
mina/asyncweb/branches/1.0/client/src/main/java/org/apache/asyncweb/client/auth/BasicScheme.java
Mon Aug  4 12:46:17 2008
@@ -107,7 +107,9 @@
     */
    public String authenticate(Credentials credentials,
HttpRequestMessage request) throws AuthenticationException {
-        LOG.trace("enter BasicScheme.authenticate(Credentials,
HttpMethod)");
+        if (LOG.isTraceEnabled()) {
+            LOG.trace("enter BasicScheme.authenticate(Credentials,
HttpMethod)");
+        }

        if (request == null) {
            throw new IllegalArgumentException("Request may not be
null");
@@ -137,7 +139,9 @@
     */
    public static String authenticate(UsernamePasswordCredentials
credentials, String charset) {
-        LOG.trace("enter
BasicScheme.authenticate(UsernamePasswordCredentials, String)");
+        if (LOG.isTraceEnabled()) {
+            LOG.trace("enter
BasicScheme.authenticate(UsernamePasswordCredentials, String)");
+        }

        if (credentials == null) {
            throw new IllegalArgumentException("Credentials may not be
null");
@@ -145,7 +149,7 @@
        if (charset == null || charset.length() == 0) {
            throw new IllegalArgumentException("charset may not be null
or empty");
        }
-        StringBuffer buffer = new StringBuffer();
+        StringBuilder buffer = new StringBuilder();
        buffer.append(credentials.getUserName());
        buffer.append(":");
        buffer.append(credentials.getPassword());

Modified:
mina/asyncweb/branches/1.0/client/src/main/java/org/apache/asyncweb/client/auth/DigestScheme.java
URL:
http://svn.apache.org/viewvc/mina/asyncweb/branches/1.0/client/src/main/java/org/apache/asyncweb/client/auth/DigestScheme.java?rev=682480&r1=682479&r2=682480&view=diff
==============================================================================
---
mina/asyncweb/branches/1.0/client/src/main/java/org/apache/asyncweb/client/auth/DigestScheme.java
(original)
+++
mina/asyncweb/branches/1.0/client/src/main/java/org/apache/asyncweb/client/auth/DigestScheme.java
Mon Aug  4 12:46:17 2008
@@ -176,7 +176,9 @@
    public String authenticate(Credentials credentials,
HttpRequestMessage request)
    throws AuthenticationException {

-        LOG.trace("enter DigestScheme.authenticate(Credentials,
HttpMethod)");
+        if (LOG.isTraceEnabled()) {
+            LOG.trace("enter DigestScheme.authenticate(Credentials,
HttpMethod)");
+        }

        UsernamePasswordCredentials usernamepassword = null;
        try {
@@ -187,7 +189,7 @@
                    + credentials.getClass().getName());
        }
        getParameters().put("methodname", request.getRequestMethod());
-        StringBuffer buffer = new StringBuffer(request.getPath());
+        StringBuilder buffer = new StringBuilder(request.getPath());
        String query = request.getUrl().getQuery();
        if (query != null) {
            if (query.indexOf("?") != 0) {
@@ -219,7 +221,9 @@
     */
    private String createDigest(final String uname, final String pwd)
throws AuthenticationException {
-        LOG.trace("enter DigestScheme.createDigest(String, String,
Map)");
+        if (LOG.isTraceEnabled()) {
+            LOG.trace("enter DigestScheme.createDigest(String, String,
Map)");
+        }

        final String digAlg = "MD5";

@@ -257,7 +261,7 @@
        }

        // 3.2.2.2: Calculating digest
-        StringBuffer tmp = new StringBuffer(uname.length() +
realm.length() + pwd.length() + 2);
+        StringBuilder tmp = new StringBuilder(uname.length() +
realm.length() + pwd.length() + 2);
        tmp.append(uname);
        tmp.append(':');
        tmp.append(realm);
@@ -272,7 +276,7 @@
            //      ":" unq(cnonce-value)

            String tmp2=encode(md5Helper.digest(EncodingUtil.getBytes(a1,
charset)));
-            StringBuffer tmp3 = new StringBuffer(tmp2.length() +
nonce.length() + cnonce.length() + 2);
+            StringBuilder tmp3 = new StringBuilder(tmp2.length() +
nonce.length() + cnonce.length() + 2);
            tmp3.append(tmp2);
            tmp3.append(':');
            tmp3.append(nonce);
@@ -297,8 +301,10 @@
        // 3.2.2.1
        String serverDigestValue;
        if (qopVariant == QOP_MISSING) {
-            LOG.debug("Using null qop method");
-            StringBuffer tmp2 = new StringBuffer(md5a1.length() +
nonce.length() + md5a2.length());
+            if (LOG.isDebugEnabled()) {
+                LOG.debug("Using null qop method");
+            }
+            StringBuilder tmp2 = new StringBuilder(md5a1.length() +
nonce.length() + md5a2.length());
            tmp2.append(md5a1);
            tmp2.append(':');
            tmp2.append(nonce);
@@ -310,7 +316,7 @@
                LOG.debug("Using qop method " + qop);
            }
            String qopOption = getQopVariantString();
-            StringBuffer tmp2 = new StringBuffer(md5a1.length() +
nonce.length()
+            StringBuilder tmp2 = new StringBuilder(md5a1.length() +
nonce.length()
                + NC.length() + cnonce.length() + qopOption.length() +
md5a2.length() + 5);
            tmp2.append(md5a1);
            tmp2.append(':');
@@ -343,8 +349,10 @@
    private String createDigestHeader(final String uname, final String
digest)
        throws AuthenticationException {

-        LOG.trace("enter DigestScheme.createDigestHeader(String, Map, "
-            + "String)");
+        if (LOG.isTraceEnabled()) {
+            LOG.trace("enter DigestScheme.createDigestHeader(String,
Map, "
+                    + "String)");
+        }

        String uri = getParameter("uri");
        String realm = getParameter("realm");
@@ -372,7 +380,7 @@
            params.add(new NameValuePair("opaque", opaque));
        }

-        StringBuffer buffer = new StringBuffer();
+        StringBuilder buffer = new StringBuilder();
        for (int i = 0; i < params.size(); i++) {
            NameValuePair param = (NameValuePair) params.get(i);
            if (i > 0) {
@@ -404,7 +412,9 @@
     * @return encoded MD5, or <CODE>null</CODE> if encoding failed
     */
    private static String encode(byte[] binaryData) {
-        LOG.trace("enter DigestScheme.encode(byte[])");
+        if (LOG.isTraceEnabled()) {
+            LOG.trace("enter DigestScheme.encode(byte[])");
+        }

        if (binaryData.length != 16) {
            return null;
@@ -429,7 +439,9 @@
     * @throws AsyncHttpClientException if MD5 algorithm is not
supported.
     */
    public static String createCnonce() {
-        LOG.trace("enter DigestScheme.createCnonce()");
+        if (LOG.isTraceEnabled()) {
+            LOG.trace("enter DigestScheme.createCnonce()");
+        }

        String cnonce;
        final String digAlg = "MD5";

Modified:
mina/asyncweb/branches/1.0/client/src/main/java/org/apache/asyncweb/client/auth/NTCredentials.java
URL:
http://svn.apache.org/viewvc/mina/asyncweb/branches/1.0/client/src/main/java/org/apache/asyncweb/client/auth/NTCredentials.java?rev=682480&r1=682479&r2=682480&view=diff
==============================================================================
---
mina/asyncweb/branches/1.0/client/src/main/java/org/apache/asyncweb/client/auth/NTCredentials.java
(original)
+++
mina/asyncweb/branches/1.0/client/src/main/java/org/apache/asyncweb/client/auth/NTCredentials.java
Mon Aug  4 12:46:17 2008
@@ -130,7 +130,7 @@
     * @return A string represenation of this object.
     */
    public String toString() {
-        final StringBuffer sbResult = new
StringBuffer(super.toString());
+        final StringBuilder sbResult = new
StringBuilder(super.toString());
        sbResult.append("@");
        sbResult.append(this.host);

Modified:
mina/asyncweb/branches/1.0/client/src/main/java/org/apache/asyncweb/client/auth/NTLMScheme.java
URL:
http://svn.apache.org/viewvc/mina/asyncweb/branches/1.0/client/src/main/java/org/apache/asyncweb/client/auth/NTLMScheme.java?rev=682480&r1=682479&r2=682480&view=diff
==============================================================================
---
mina/asyncweb/branches/1.0/client/src/main/java/org/apache/asyncweb/client/auth/NTLMScheme.java
(original)
+++
mina/asyncweb/branches/1.0/client/src/main/java/org/apache/asyncweb/client/auth/NTLMScheme.java
Mon Aug  4 12:46:17 2008
@@ -173,7 +173,9 @@
     */
    public String authenticate(Credentials credentials,
HttpRequestMessage request)
        throws AuthenticationException {
-        LOG.trace("enter NTLMScheme.authenticate(Credentials,
HttpMethod)");
+        if (LOG.isTraceEnabled()) {
+            LOG.trace("enter NTLMScheme.authenticate(Credentials,
HttpMethod)");
+        }

        if (this.state == UNINITIATED) {
            throw new IllegalStateException("NTLM authentication process
has not been initiated");
Modified:
mina/asyncweb/branches/1.0/client/src/main/java/org/apache/asyncweb/client/auth/UsernamePasswordCredentials.java
URL:
http://svn.apache.org/viewvc/mina/asyncweb/branches/1.0/client/src/main/java/org/apache/asyncweb/client/auth/UsernamePasswordCredentials.java?rev=682480&r1=682479&r2=682480&view=diff
==============================================================================
---
mina/asyncweb/branches/1.0/client/src/main/java/org/apache/asyncweb/client/auth/UsernamePasswordCredentials.java
(original)
+++
mina/asyncweb/branches/1.0/client/src/main/java/org/apache/asyncweb/client/auth/UsernamePasswordCredentials.java
Mon Aug  4 12:46:17 2008
@@ -144,7 +144,7 @@
     * @return the username:password formed string
     */
    public String toString() {
-        StringBuffer result = new StringBuffer();
+        StringBuilder result = new StringBuilder();
        result.append(this.userName);
        result.append(":");
        result.append((this.password == null) ? "null" : this.password);

Modified:
mina/asyncweb/branches/1.0/client/src/main/java/org/apache/asyncweb/client/codec/HttpDecoder.java
URL:
http://svn.apache.org/viewvc/mina/asyncweb/branches/1.0/client/src/main/java/org/apache/asyncweb/client/codec/HttpDecoder.java?rev=682480&r1=682479&r2=682480&view=diff
==============================================================================
---
mina/asyncweb/branches/1.0/client/src/main/java/org/apache/asyncweb/client/codec/HttpDecoder.java
(original)
+++
mina/asyncweb/branches/1.0/client/src/main/java/org/apache/asyncweb/client/codec/HttpDecoder.java
Mon Aug  4 12:46:17 2008
@@ -248,7 +248,9 @@
     * @throws Exception if any exception occurs
     */
    public void decodeHeader(String line, HttpResponseMessage msg) throws
Exception {
-        LOG.debug("Processing Header Line: " + line);
+        if (LOG.isDebugEnabled()) {
+            LOG.debug("Processing Header Line: " + line);
+        }
        // first, get rid of the CRLF from linear whitespace
        line = folding.matcher(line).replaceAll("$1");
        int pos = line.indexOf(":");
@@ -420,7 +422,9 @@
     * @see Cookie
     */
    public Cookie decodeCookie(String cookieStr, HttpResponseMessage msg)
throws Exception {
-        LOG.debug("Processing Cookie Line: " + cookieStr);
+        if (LOG.isDebugEnabled()) {
+            LOG.debug("Processing Cookie Line: " + cookieStr);
+        }
        Cookie cookie = null;

        String pairs[] = cookieStr.split(";");

Modified:
mina/asyncweb/branches/1.0/client/src/main/java/org/apache/asyncweb/client/util/EncodingUtil.java
URL:
http://svn.apache.org/viewvc/mina/asyncweb/branches/1.0/client/src/main/java/org/apache/asyncweb/client/util/EncodingUtil.java?rev=682480&r1=682479&r2=682480&view=diff
==============================================================================
---
mina/asyncweb/branches/1.0/client/src/main/java/org/apache/asyncweb/client/util/EncodingUtil.java
(original)
+++
mina/asyncweb/branches/1.0/client/src/main/java/org/apache/asyncweb/client/util/EncodingUtil.java
Mon Aug  4 12:46:17 2008
@@ -103,7 +103,7 @@
     */
    private static String doFormUrlEncode(NameValuePair[] pairs, String
charset)
        throws UnsupportedEncodingException {
-        StringBuffer buf = new StringBuffer();
+        StringBuilder buf = new StringBuilder();
        for (int i = 0; i < pairs.length; i++) {
            URLCodec codec = new URLCodec();
            NameValuePair pair = pairs[i];

Modified:
mina/asyncweb/branches/1.0/client/src/main/java/org/apache/asyncweb/client/util/ParameterFormatter.java
URL:
http://svn.apache.org/viewvc/mina/asyncweb/branches/1.0/client/src/main/java/org/apache/asyncweb/client/util/ParameterFormatter.java?rev=682480&r1=682479&r2=682480&view=diff
==============================================================================
---
mina/asyncweb/branches/1.0/client/src/main/java/org/apache/asyncweb/client/util/ParameterFormatter.java
(original)
+++
mina/asyncweb/branches/1.0/client/src/main/java/org/apache/asyncweb/client/util/ParameterFormatter.java
Mon Aug  4 12:46:17 2008
@@ -150,7 +150,7 @@
     * potentially unsafe special characters
     */
    public static void formatValue(
-            final StringBuffer buffer, final String value, boolean
alwaysUseQuotes) {
+            final StringBuilder buffer, final String value, boolean
alwaysUseQuotes) {
        if (buffer == null) {
            throw new IllegalArgumentException("String buffer may not be
null");
        }
@@ -194,7 +194,7 @@
     * @param buffer output buffer
     * @param param the parameter to be formatted
     */
-    public void format(final StringBuffer buffer, final NameValuePair
param) {
+    public void format(final StringBuilder buffer, final NameValuePair
param) {
        if (buffer == null) {
            throw new IllegalArgumentException("String buffer may not be
null");
        }
@@ -219,7 +219,7 @@
     * attribute/value pair
     */
    public String format(final NameValuePair param) {
-        StringBuffer buffer = new StringBuffer();
+        StringBuilder buffer = new StringBuilder();
        format(buffer, param);
        return buffer.toString();
    }






--
--
cordialement, regards,
Emmanuel Lécharny
www.iktek.com
directory.apache.org


Reply via email to