You are viewing a plain text version of this content. The canonical link for it is here.
Posted to log4j-dev@logging.apache.org by Gary Gregory <ga...@gmail.com> on 2016/11/06 14:17:27 UTC

Fwd: logging-log4j2 git commit: LOG4J2-1665 make IntegerPatternConverter garbage-free

This code needs comments to warn against future changes.

Gary
---------- Forwarded message ----------
From: <rp...@apache.org>
Date: Nov 5, 2016 11:59 PM
Subject: logging-log4j2 git commit: LOG4J2-1665 make
IntegerPatternConverter garbage-free
To: <co...@logging.apache.org>
Cc:

Repository: logging-log4j2
Updated Branches:
  refs/heads/master e0058d672 -> 84e16b884


LOG4J2-1665 make IntegerPatternConverter garbage-free


Project: http://git-wip-us.apache.org/repos/asf/logging-log4j2/repo
Commit: http://git-wip-us.apache.org/repos/asf/logging-log4j2/
commit/84e16b88
Tree: http://git-wip-us.apache.org/repos/asf/logging-log4j2/tree/84e16b88
Diff: http://git-wip-us.apache.org/repos/asf/logging-log4j2/diff/84e16b88

Branch: refs/heads/master
Commit: 84e16b8843f32c124f623ffdec8a68e20cc5483a
Parents: e0058d6
Author: rpopma <rp...@apache.org>
Authored: Sun Nov 6 15:59:00 2016 +0900
Committer: rpopma <rp...@apache.org>
Committed: Sun Nov 6 15:59:00 2016 +0900

----------------------------------------------------------------------
 .../log4j/core/pattern/IntegerPatternConverter.java | 16 +++++++---------
 src/changes/changes.xml                             |  3 +++
 2 files changed, 10 insertions(+), 9 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/
84e16b88/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/
IntegerPatternConverter.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/IntegerPatternConverter.java
b/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/
IntegerPatternConverter.java
index 5380d45..9e6d419 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/
IntegerPatternConverter.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/
IntegerPatternConverter.java
@@ -20,14 +20,13 @@ import java.util.Date;

 import org.apache.logging.log4j.core.config.plugins.Plugin;

-
 /**
  * Formats an integer.
  */
 @Plugin(name = "IntegerPatternConverter", category = "FileConverter")
 @ConverterKeys({ "i", "index" })
 public final class IntegerPatternConverter extends
AbstractPatternConverter implements ArrayPatternConverter {
-
+
     /**
      * Singleton.
      */
@@ -46,16 +45,15 @@ public final class IntegerPatternConverter extends
AbstractPatternConverter impl
      * @param options options, may be null.
      * @return instance of pattern converter.
      */
-    public static IntegerPatternConverter newInstance(
-        final String[] options) {
+    public static IntegerPatternConverter newInstance(final String[]
options) {
         return INSTANCE;
     }

     @Override
     public void format(final StringBuilder toAppendTo, final Object...
objects) {
-        for (final Object obj : objects) {
-            if (obj instanceof Integer) {
-                format(obj, toAppendTo);
+        for (int i = 0; i < objects.length; i++) {
+            if (objects[i] instanceof Integer) {
+                format(objects[i], toAppendTo);
                 break;
             }
         }
@@ -67,9 +65,9 @@ public final class IntegerPatternConverter extends
AbstractPatternConverter impl
     @Override
     public void format(final Object obj, final StringBuilder toAppendTo) {
         if (obj instanceof Integer) {
-            toAppendTo.append(obj.toString());
+            toAppendTo.append(((Integer) obj).intValue());
         } else if (obj instanceof Date) {
-            toAppendTo.append(Long.toString(((Date) obj).getTime()));
+            toAppendTo.append(((Date) obj).getTime());
         }
     }
 }

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/
84e16b88/src/changes/changes.xml
----------------------------------------------------------------------
diff --git a/src/changes/changes.xml b/src/changes/changes.xml
index a204389..1925175 100644
--- a/src/changes/changes.xml
+++ b/src/changes/changes.xml
@@ -24,6 +24,9 @@
   </properties>
   <body>
     <release version="2.8" date="2016-MM-DD" description="GA Release 2.8">
+      <action issue="LOG4J2-1665" dev="rpopma" type="fix">
+        (GC) Avoid allocating temporary objects in IntegerPatternConverter.
+      </action>
       <action issue="LOG4J2-1637" dev="rpopma" type="fix">
         Fixed problems when used in OSGi containers (IllegalAccessError,
NoClassDefFoundError).
       </action>

Re: logging-log4j2 git commit: LOG4J2-1665 make IntegerPatternConverter garbage-free

Posted by Matt Sicker <bo...@gmail.com>.
The @PerformanceSensitive("allocation") annotation was what we were using
for that.

On 6 November 2016 at 08:17, Gary Gregory <ga...@gmail.com> wrote:

> This code needs comments to warn against future changes.
>
> Gary
> ---------- Forwarded message ----------
> From: <rp...@apache.org>
> Date: Nov 5, 2016 11:59 PM
> Subject: logging-log4j2 git commit: LOG4J2-1665 make
> IntegerPatternConverter garbage-free
> To: <co...@logging.apache.org>
> Cc:
>
> Repository: logging-log4j2
> Updated Branches:
>   refs/heads/master e0058d672 -> 84e16b884
>
>
> LOG4J2-1665 make IntegerPatternConverter garbage-free
>
>
> Project: http://git-wip-us.apache.org/repos/asf/logging-log4j2/repo
> Commit: http://git-wip-us.apache.org/repos/asf/logging-log4j2/commit
> /84e16b88
> Tree: http://git-wip-us.apache.org/repos/asf/logging-log4j2/tree/84e16b88
> Diff: http://git-wip-us.apache.org/repos/asf/logging-log4j2/diff/84e16b88
>
> Branch: refs/heads/master
> Commit: 84e16b8843f32c124f623ffdec8a68e20cc5483a
> Parents: e0058d6
> Author: rpopma <rp...@apache.org>
> Authored: Sun Nov 6 15:59:00 2016 +0900
> Committer: rpopma <rp...@apache.org>
> Committed: Sun Nov 6 15:59:00 2016 +0900
>
> ----------------------------------------------------------------------
>  .../log4j/core/pattern/IntegerPatternConverter.java | 16 +++++++---------
>  src/changes/changes.xml                             |  3 +++
>  2 files changed, 10 insertions(+), 9 deletions(-)
> ----------------------------------------------------------------------
>
>
> http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/8
> 4e16b88/log4j-core/src/main/java/org/apache/logging/log4j/co
> re/pattern/IntegerPatternConverter.java
> ----------------------------------------------------------------------
> diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/pat
> tern/IntegerPatternConverter.java b/log4j-core/src/main/java/org
> /apache/logging/log4j/core/pattern/IntegerPatternConverter.java
> index 5380d45..9e6d419 100644
> --- a/log4j-core/src/main/java/org/apache/logging/log4j/core/pat
> tern/IntegerPatternConverter.java
> +++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/pat
> tern/IntegerPatternConverter.java
> @@ -20,14 +20,13 @@ import java.util.Date;
>
>  import org.apache.logging.log4j.core.config.plugins.Plugin;
>
> -
>  /**
>   * Formats an integer.
>   */
>  @Plugin(name = "IntegerPatternConverter", category = "FileConverter")
>  @ConverterKeys({ "i", "index" })
>  public final class IntegerPatternConverter extends
> AbstractPatternConverter implements ArrayPatternConverter {
> -
> +
>      /**
>       * Singleton.
>       */
> @@ -46,16 +45,15 @@ public final class IntegerPatternConverter extends
> AbstractPatternConverter impl
>       * @param options options, may be null.
>       * @return instance of pattern converter.
>       */
> -    public static IntegerPatternConverter newInstance(
> -        final String[] options) {
> +    public static IntegerPatternConverter newInstance(final String[]
> options) {
>          return INSTANCE;
>      }
>
>      @Override
>      public void format(final StringBuilder toAppendTo, final Object...
> objects) {
> -        for (final Object obj : objects) {
> -            if (obj instanceof Integer) {
> -                format(obj, toAppendTo);
> +        for (int i = 0; i < objects.length; i++) {
> +            if (objects[i] instanceof Integer) {
> +                format(objects[i], toAppendTo);
>                  break;
>              }
>          }
> @@ -67,9 +65,9 @@ public final class IntegerPatternConverter extends
> AbstractPatternConverter impl
>      @Override
>      public void format(final Object obj, final StringBuilder toAppendTo) {
>          if (obj instanceof Integer) {
> -            toAppendTo.append(obj.toString());
> +            toAppendTo.append(((Integer) obj).intValue());
>          } else if (obj instanceof Date) {
> -            toAppendTo.append(Long.toString(((Date) obj).getTime()));
> +            toAppendTo.append(((Date) obj).getTime());
>          }
>      }
>  }
>
> http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/8
> 4e16b88/src/changes/changes.xml
> ----------------------------------------------------------------------
> diff --git a/src/changes/changes.xml b/src/changes/changes.xml
> index a204389..1925175 100644
> --- a/src/changes/changes.xml
> +++ b/src/changes/changes.xml
> @@ -24,6 +24,9 @@
>    </properties>
>    <body>
>      <release version="2.8" date="2016-MM-DD" description="GA Release 2.8">
> +      <action issue="LOG4J2-1665" dev="rpopma" type="fix">
> +        (GC) Avoid allocating temporary objects in
> IntegerPatternConverter.
> +      </action>
>        <action issue="LOG4J2-1637" dev="rpopma" type="fix">
>          Fixed problems when used in OSGi containers (IllegalAccessError,
> NoClassDefFoundError).
>        </action>
>
>


-- 
Matt Sicker <bo...@gmail.com>