Good point.
I'm looking at a way to use aspects during unit testing to automatically
detect if objects are allocated.
This will help prevent regressions once the no-GC goal has been achieved.

On Sat, Feb 20, 2016 at 2:03 AM, Gary Gregory <[email protected]>
wrote:

> 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