Those both sound better, but I can't decide on which.

On 21 February 2016 at 21:32, Gary Gregory <[email protected]> wrote:

> I wonder if @CriticalPath or @HandOptimized would convey better what we
> are trying to express?
>
> Gary
>
>
> ---------- Forwarded message ----------
> From: <[email protected]>
> Date: Sun, Feb 21, 2016 at 7:02 PM
> Subject: logging-log4j2 git commit: Add PerformanceSensitive annotation.
> To: [email protected]
>
>
> Repository: logging-log4j2
> Updated Branches:
>   refs/heads/master f884234a8 -> 4aa7df826
>
>
> Add PerformanceSensitive annotation.
>
>
> Project: http://git-wip-us.apache.org/repos/asf/logging-log4j2/repo
> Commit:
> http://git-wip-us.apache.org/repos/asf/logging-log4j2/commit/4aa7df82
> Tree: http://git-wip-us.apache.org/repos/asf/logging-log4j2/tree/4aa7df82
> Diff: http://git-wip-us.apache.org/repos/asf/logging-log4j2/diff/4aa7df82
>
> Branch: refs/heads/master
> Commit: 4aa7df826de7e359ac3bde98597fe5ca6e4b5901
> Parents: f884234
> Author: Matt Sicker <[email protected]>
> Authored: Sun Feb 21 21:02:51 2016 -0600
> Committer: Matt Sicker <[email protected]>
> Committed: Sun Feb 21 21:02:51 2016 -0600
>
> ----------------------------------------------------------------------
>  .../log4j/util/PerformanceSensitive.java        | 29 ++++++++++++++++++++
>  .../logging/log4j/util/ReflectionUtil.java      |  5 ++++
>  .../log4j/core/config/AppenderControl.java      |  4 +++
>  .../core/config/AppenderControlArraySet.java    |  8 ++++--
>  4 files changed, 43 insertions(+), 3 deletions(-)
> ----------------------------------------------------------------------
>
>
>
> http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/4aa7df82/log4j-api/src/main/java/org/apache/logging/log4j/util/PerformanceSensitive.java
> ----------------------------------------------------------------------
> diff --git
> a/log4j-api/src/main/java/org/apache/logging/log4j/util/PerformanceSensitive.java
> b/log4j-api/src/main/java/org/apache/logging/log4j/util/PerformanceSensitive.java
> new file mode 100644
> index 0000000..3fbb058
> --- /dev/null
> +++
> b/log4j-api/src/main/java/org/apache/logging/log4j/util/PerformanceSensitive.java
> @@ -0,0 +1,29 @@
> +/*
> + * Licensed to the Apache Software Foundation (ASF) under one or more
> + * contributor license agreements. See the NOTICE file distributed with
> + * this work for additional information regarding copyright ownership.
> + * The ASF licenses this file to You under the Apache license, Version 2.0
> + * (the "License"); you may not use this file except in compliance with
> + * the License. You may obtain a copy of the License at
> + *
> + *      http://www.apache.org/licenses/LICENSE-2.0
> + *
> + * Unless required by applicable law or agreed to in writing, software
> + * distributed under the License is distributed on an "AS IS" BASIS,
> + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
> implied.
> + * See the license for the specific language governing permissions and
> + * limitations under the license.
> + */
> +
> +package org.apache.logging.log4j.util;
> +
> +/**
> + * Indicates that a particular annotated construct was written with
> certain performance constraints in mind that
> + * should be considered when modifying or testing.
> + *
> + * @since 2.6
> + */
> +public @interface PerformanceSensitive {
> +    /** Description of why this is written the way it is. */
> +    String value() default "";
> +}
>
>
> http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/4aa7df82/log4j-api/src/main/java/org/apache/logging/log4j/util/ReflectionUtil.java
> ----------------------------------------------------------------------
> diff --git
> a/log4j-api/src/main/java/org/apache/logging/log4j/util/ReflectionUtil.java
> b/log4j-api/src/main/java/org/apache/logging/log4j/util/ReflectionUtil.java
> index 6e7ce4a..dec2350 100644
> ---
> a/log4j-api/src/main/java/org/apache/logging/log4j/util/ReflectionUtil.java
> +++
> b/log4j-api/src/main/java/org/apache/logging/log4j/util/ReflectionUtil.java
> @@ -117,6 +117,7 @@ public final class ReflectionUtil {
>      // (MS) I believe this would work without any modifications
> elsewhere, but I could be wrong
>
>      // migrated from ReflectiveCallerClassUtility
> +    @PerformanceSensitive
>      public static Class<?> getCallerClass(final int depth) {
>          if (depth < 0) {
>              throw new IndexOutOfBoundsException(Integer.toString(depth));
> @@ -193,11 +194,13 @@ public final class ReflectionUtil {
>      }
>
>      // migrated from ClassLoaderContextSelector
> +    @PerformanceSensitive
>      public static Class<?> getCallerClass(final String fqcn) {
>          return getCallerClass(fqcn, Strings.EMPTY);
>      }
>
>      // migrated from Log4jLoggerFactory
> +    @PerformanceSensitive
>      public static Class<?> getCallerClass(final String fqcn, final String
> pkg) {
>          if (supportsFastReflection()) {
>              boolean next = false;
> @@ -227,6 +230,7 @@ public final class ReflectionUtil {
>      }
>
>      // added for use in LoggerAdapter implementations mainly
> +    @PerformanceSensitive
>      public static Class<?> getCallerClass(final Class<?> anchor) {
>          if (supportsFastReflection()) {
>              boolean next = false;
> @@ -270,6 +274,7 @@ public final class ReflectionUtil {
>      }
>
>      // migrated from ThrowableProxy
> +    @PerformanceSensitive
>      public static Stack<Class<?>> getCurrentStackTrace() {
>          // benchmarks show that using the SecurityManager is much faster
> than looping through getCallerClass(int)
>          if (SECURITY_MANAGER != null) {
>
>
> http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/4aa7df82/log4j-core/src/main/java/org/apache/logging/log4j/core/config/AppenderControl.java
> ----------------------------------------------------------------------
> diff --git
> a/log4j-core/src/main/java/org/apache/logging/log4j/core/config/AppenderControl.java
> b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/AppenderControl.java
> index f65011d..175c9e1 100644
> ---
> a/log4j-core/src/main/java/org/apache/logging/log4j/core/config/AppenderControl.java
> +++
> b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/AppenderControl.java
> @@ -25,6 +25,7 @@ import org.apache.logging.log4j.core.LogEvent;
>  import org.apache.logging.log4j.core.appender.AppenderLoggingException;
>  import org.apache.logging.log4j.core.filter.AbstractFilterable;
>  import org.apache.logging.log4j.core.filter.Filterable;
> +import org.apache.logging.log4j.util.PerformanceSensitive;
>
>  /**
>   * Wraps an {@link Appender} with details an appender implementation
> shouldn't need to know about.
> @@ -88,14 +89,17 @@ public class AppenderControl extends
> AbstractFilterable {
>          return isFilteredByAppenderControl(event) ||
> isFilteredByLevel(event) || isRecursiveCall();
>      }
>
> +    @PerformanceSensitive
>      private boolean isFilteredByAppenderControl(final LogEvent event) {
>          return getFilter() != null && Filter.Result.DENY ==
> getFilter().filter(event);
>      }
>
> +    @PerformanceSensitive
>      private boolean isFilteredByLevel(final LogEvent event) {
>          return level != null && intLevel < event.getLevel().intLevel();
>      }
>
> +    @PerformanceSensitive
>      private boolean isRecursiveCall() {
>          if (recursive.get() != null) {
>              appenderErrorHandlerMessage("Recursive call to appender ");
>
>
> http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/4aa7df82/log4j-core/src/main/java/org/apache/logging/log4j/core/config/AppenderControlArraySet.java
> ----------------------------------------------------------------------
> diff --git
> a/log4j-core/src/main/java/org/apache/logging/log4j/core/config/AppenderControlArraySet.java
> b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/AppenderControlArraySet.java
> index 78a42b3..d30ce32 100644
> ---
> a/log4j-core/src/main/java/org/apache/logging/log4j/core/config/AppenderControlArraySet.java
> +++
> b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/AppenderControlArraySet.java
> @@ -16,17 +16,19 @@
>   */
>  package org.apache.logging.log4j.core.config;
>
> -import org.apache.logging.log4j.core.Appender;
> -
>  import java.util.Arrays;
>  import java.util.HashMap;
>  import java.util.Map;
>  import java.util.Objects;
>  import java.util.concurrent.atomic.AtomicReference;
>
> +import org.apache.logging.log4j.core.Appender;
> +import org.apache.logging.log4j.util.PerformanceSensitive;
> +
>  /**
>   * Data structure with similar semantics to CopyOnWriteArraySet, but
> giving direct access to the underlying array.
>   */
> +@PerformanceSensitive
>  public class AppenderControlArraySet {
>      private final AtomicReference<AppenderControl[]> appenderArray = new
> AtomicReference<>(new AppenderControl[0]);
>
> @@ -117,4 +119,4 @@ public class AppenderControlArraySet {
>      public AppenderControl[] get() {
>          return appenderArray.get();
>      }
> -}
> \ No newline at end of file
> +}
>
>
>
>
> --
> E-Mail: [email protected] | [email protected]
> Java Persistence with Hibernate, Second Edition
> <http://www.manning.com/bauer3/>
> JUnit in Action, Second Edition <http://www.manning.com/tahchiev/>
> Spring Batch in Action <http://www.manning.com/templier/>
> Blog: http://garygregory.wordpress.com
> Home: http://garygregory.com/
> Tweet! http://twitter.com/GaryGregory
>



-- 
Matt Sicker <[email protected]>

Reply via email to