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>

Reply via email to