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>