I think that all these perf changes need a method comment that says something like "note that this code carefully does this and not that for performance".
It should all be doc'd otherwise it is too easy for someone else to edit the method and undo the intent of the carefully tweaked perf changes. Gary ---------- Forwarded message ---------- From: <[email protected]> Date: Feb 19, 2016 7:41 AM Subject: logging-log4j2 git commit: LOG4J2-1281 LoggerConfig.getProperties() should not allocate on each call. To: <[email protected]> Cc: Repository: logging-log4j2 Updated Branches: refs/heads/master 25a780e95 -> 3458ea944 LOG4J2-1281 LoggerConfig.getProperties() should not allocate on each call. Project: http://git-wip-us.apache.org/repos/asf/logging-log4j2/repo Commit: http://git-wip-us.apache.org/repos/asf/logging-log4j2/commit/3458ea94 Tree: http://git-wip-us.apache.org/repos/asf/logging-log4j2/tree/3458ea94 Diff: http://git-wip-us.apache.org/repos/asf/logging-log4j2/diff/3458ea94 Branch: refs/heads/master Commit: 3458ea94491c01a4ce91bcf5bb249c80306fa42c Parents: 25a780e Author: rpopma <[email protected]> Authored: Sat Feb 20 00:41:24 2016 +0900 Committer: rpopma <[email protected]> Committed: Sat Feb 20 00:41:24 2016 +0900 ---------------------------------------------------------------------- .../org/apache/logging/log4j/core/config/LoggerConfig.java | 7 ++++--- src/changes/changes.xml | 3 +++ 2 files changed, 7 insertions(+), 3 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/3458ea94/log4j-core/src/main/java/org/apache/logging/log4j/core/config/LoggerConfig.java ---------------------------------------------------------------------- diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/config/LoggerConfig.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/LoggerConfig.java index 2bd25be..1d0f530 100644 --- a/log4j-core/src/main/java/org/apache/logging/log4j/core/config/LoggerConfig.java +++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/LoggerConfig.java @@ -127,11 +127,12 @@ public class LoggerConfig extends AbstractFilterable { this.includeLocation = includeLocation; this.config = config; if (properties != null && properties.length > 0) { - this.properties = new HashMap<>(properties.length); + final Map<Property, Boolean> map = new HashMap<>(properties.length); for (final Property prop : properties) { final boolean interpolate = prop.getValue().contains("${"); - this.properties.put(prop, interpolate); + map.put(prop, interpolate); } + this.properties = Collections.unmodifiableMap(map); } else { this.properties = null; } @@ -308,7 +309,7 @@ public class LoggerConfig extends AbstractFilterable { */ // LOG4J2-157 public Map<Property, Boolean> getProperties() { - return properties == null ? null : Collections.unmodifiableMap(properties); + return properties; } /** http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/3458ea94/src/changes/changes.xml ---------------------------------------------------------------------- diff --git a/src/changes/changes.xml b/src/changes/changes.xml index e579ed4..a006907 100644 --- a/src/changes/changes.xml +++ b/src/changes/changes.xml @@ -24,6 +24,9 @@ </properties> <body> <release version="2.6" date="201Y-MM-DD" description="GA Release 2.6"> + <action issue="LOG4J2-1281" dev="rpopma" type="fix"> + LoggerConfig.getProperties() should not allocate on each call. + </action> <action issue="LOG4J2-1280" dev="rpopma" type="fix"> Logger methods taking Supplier parameters now correctly handle cases where the supplied value is a Message. </action>
