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]>
