You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@logging.apache.org by rp...@apache.org on 2016/11/19 12:48:32 UTC
logging-log4j2 git commit: LOG4J2-1714 Avoid allocating temporary
objects in AbstractStyleNameConverter
Repository: logging-log4j2
Updated Branches:
refs/heads/master 0f3d9cfe3 -> 3e34488dc
LOG4J2-1714 Avoid allocating temporary objects in AbstractStyleNameConverter
Project: http://git-wip-us.apache.org/repos/asf/logging-log4j2/repo
Commit: http://git-wip-us.apache.org/repos/asf/logging-log4j2/commit/3e34488d
Tree: http://git-wip-us.apache.org/repos/asf/logging-log4j2/tree/3e34488d
Diff: http://git-wip-us.apache.org/repos/asf/logging-log4j2/diff/3e34488d
Branch: refs/heads/master
Commit: 3e34488dc8a4d6cddc298c96ba1d36840661a757
Parents: 0f3d9cf
Author: rpopma <rp...@apache.org>
Authored: Sat Nov 19 21:48:23 2016 +0900
Committer: rpopma <rp...@apache.org>
Committed: Sat Nov 19 21:48:23 2016 +0900
----------------------------------------------------------------------
.../core/pattern/AbstractStyleNameConverter.java | 14 +++++++++-----
.../apache/logging/log4j/core/pattern/AnsiEscape.java | 6 ++++--
src/changes/changes.xml | 3 +++
3 files changed, 16 insertions(+), 7 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/3e34488d/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/AbstractStyleNameConverter.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/AbstractStyleNameConverter.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/AbstractStyleNameConverter.java
index c15c9fc..2e1db29 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/AbstractStyleNameConverter.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/AbstractStyleNameConverter.java
@@ -25,6 +25,7 @@ import org.apache.logging.log4j.core.LogEvent;
import org.apache.logging.log4j.core.config.Configuration;
import org.apache.logging.log4j.core.config.plugins.Plugin;
import org.apache.logging.log4j.core.layout.PatternLayout;
+import org.apache.logging.log4j.util.PerformanceSensitive;
/**
* Style pattern converter. Adds ANSI color styling to the result of the enclosed pattern.
@@ -370,13 +371,16 @@ public abstract class AbstractStyleNameConverter extends LogEventPatternConverte
* {@inheritDoc}
*/
@Override
+ @PerformanceSensitive("allocation")
public void format(final LogEvent event, final StringBuilder toAppendTo) {
- final StringBuilder buf = new StringBuilder();
- for (final PatternFormatter formatter : formatters) {
- formatter.format(event, buf);
+ final int start = toAppendTo.length();
+ for (int i = 0; i < formatters.size(); i++) {
+ final PatternFormatter formatter = formatters.get(i);
+ formatter.format(event, toAppendTo);
}
- if (buf.length() > 0) {
- toAppendTo.append(style).append(buf.toString()).append(AnsiEscape.getDefaultStyle());
+ if (toAppendTo.length() > start) {
+ toAppendTo.insert(start, style);
+ toAppendTo.append(AnsiEscape.getDefaultStyle());
}
}
}
http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/3e34488d/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/AnsiEscape.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/AnsiEscape.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/AnsiEscape.java
index 33b2e64..c831234 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/AnsiEscape.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/AnsiEscape.java
@@ -40,7 +40,7 @@ public enum AnsiEscape {
* </p>
*/
CSI("\u001b["),
-
+
/**
* Escape suffix.
*/
@@ -216,6 +216,8 @@ public enum AnsiEscape {
*/
BG_WHITE("47");
+ private static final String DEFAULT_STYLE = CSI.getCode() + SUFFIX.getCode();
+
private final String code;
AnsiEscape(final String code) {
@@ -228,7 +230,7 @@ public enum AnsiEscape {
* @return the default style
*/
public static String getDefaultStyle() {
- return CSI.getCode() + SUFFIX.getCode();
+ return DEFAULT_STYLE;
}
/**
http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/3e34488d/src/changes/changes.xml
----------------------------------------------------------------------
diff --git a/src/changes/changes.xml b/src/changes/changes.xml
index 494b483..90dbf16 100644
--- a/src/changes/changes.xml
+++ b/src/changes/changes.xml
@@ -39,6 +39,9 @@
<action issue="LOG4J2-1706" dev="rpopma" type="fix">
Make TimeFilter usable as global filter and as logger filter.
</action>
+ <action issue="LOG4J2-1714" dev="rpopma" type="fix">
+ (GC) Avoid allocating temporary objects in AbstractStyleNameConverter.
+ </action>
<action issue="LOG4J2-1680" dev="rpopma" type="fix">
(GC) Avoid allocating temporary objects in TimeFilter.
</action>