Repository: logging-log4j2 Updated Branches: refs/heads/master c1abcc52c -> c154460bd
renamed perf tests to group async tests together in overall report Project: http://git-wip-us.apache.org/repos/asf/logging-log4j2/repo Commit: http://git-wip-us.apache.org/repos/asf/logging-log4j2/commit/c154460b Tree: http://git-wip-us.apache.org/repos/asf/logging-log4j2/tree/c154460b Diff: http://git-wip-us.apache.org/repos/asf/logging-log4j2/diff/c154460b Branch: refs/heads/master Commit: c154460bd4e94341f13fc0031da090a48a7b062d Parents: c1abcc5 Author: rpopma <[email protected]> Authored: Sat Sep 20 23:37:57 2014 +0900 Committer: rpopma <[email protected]> Committed: Sat Sep 20 23:37:57 2014 +0900 ---------------------------------------------------------------------- .../perf/jmh/AsyncAppenderLog4j1Benchmark.java | 101 ++++++++++++++++++ .../perf/jmh/AsyncAppenderLog4j2Benchmark.java | 101 ++++++++++++++++++ .../perf/jmh/AsyncAppenderLogbackBenchmark.java | 103 +++++++++++++++++++ .../perf/jmh/Log4j1AsyncAppenderBenchmark.java | 101 ------------------ .../perf/jmh/Log4j2AsyncAppenderBenchmark.java | 101 ------------------ .../perf/jmh/LogbackAsyncAppenderBenchmark.java | 103 ------------------- 6 files changed, 305 insertions(+), 305 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/c154460b/log4j-perf/src/main/java/org/apache/logging/log4j/perf/jmh/AsyncAppenderLog4j1Benchmark.java ---------------------------------------------------------------------- diff --git a/log4j-perf/src/main/java/org/apache/logging/log4j/perf/jmh/AsyncAppenderLog4j1Benchmark.java b/log4j-perf/src/main/java/org/apache/logging/log4j/perf/jmh/AsyncAppenderLog4j1Benchmark.java new file mode 100644 index 0000000..db35fbb --- /dev/null +++ b/log4j-perf/src/main/java/org/apache/logging/log4j/perf/jmh/AsyncAppenderLog4j1Benchmark.java @@ -0,0 +1,101 @@ +/* + * 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.perf.jmh; + +import java.io.File; +import java.util.Arrays; +import java.util.concurrent.TimeUnit; + +import org.apache.log4j.LogManager; +import org.apache.log4j.Logger; +import org.openjdk.jmh.annotations.Benchmark; +import org.openjdk.jmh.annotations.BenchmarkMode; +import org.openjdk.jmh.annotations.Level; +import org.openjdk.jmh.annotations.Mode; +import org.openjdk.jmh.annotations.OutputTimeUnit; +import org.openjdk.jmh.annotations.Scope; +import org.openjdk.jmh.annotations.Setup; +import org.openjdk.jmh.annotations.State; +import org.openjdk.jmh.annotations.TearDown; + +/** + * Tests Log4j-1.2 Async Appender performance. + */ +// ============================== HOW TO RUN THIS TEST: ==================================== +// +// single thread: +// java -jar log4j-perf/target/benchmarks.jar ".*Async.*Benchmark.*" -f 1 -wi 5 -i 5 +// +// multiple threads (for example, 4 threads): +// java -jar log4j-perf/target/benchmarks.jar ".*Async.*Benchmark.*" -f 1 -wi 5 -i 5 -t 4 -si true +// +// Usage help: +// java -jar log4j-perf/target/benchmarks.jar -help +// +public class AsyncAppenderLog4j1Benchmark { + + final static char[] CHARS = new char[500]; + static { + Arrays.fill(CHARS, 'a'); + } + final static String TEST = new String(CHARS); + + @State(Scope.Benchmark) + public static class NormalState { + Logger logger; + + @Setup(Level.Trial) + public void up() { + System.setProperty("log4j.configuration", "perf-log4j12-async.xml"); + logger = LogManager.getLogger(getClass()); + } + + @TearDown(Level.Trial) + public void down() { + LogManager.shutdown(); + new File("perftest.log").delete(); + } + } + + @Benchmark + @BenchmarkMode(Mode.Throughput) + @OutputTimeUnit(TimeUnit.SECONDS) + public boolean throughputBaseline(final NormalState e) { + return e.logger.isInfoEnabled(); + } + + @Benchmark + @BenchmarkMode(Mode.Throughput) + @OutputTimeUnit(TimeUnit.SECONDS) + public void throughput(final NormalState e) { + e.logger.info(TEST); + } + + @Benchmark + @BenchmarkMode(Mode.SampleTime) + @OutputTimeUnit(TimeUnit.NANOSECONDS) + public boolean latencyBaseline(final NormalState e) { + return e.logger.isInfoEnabled(); + } + + @Benchmark + @BenchmarkMode(Mode.SampleTime) + @OutputTimeUnit(TimeUnit.NANOSECONDS) + public void latency(final NormalState e) { + e.logger.info(TEST); + } +} http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/c154460b/log4j-perf/src/main/java/org/apache/logging/log4j/perf/jmh/AsyncAppenderLog4j2Benchmark.java ---------------------------------------------------------------------- diff --git a/log4j-perf/src/main/java/org/apache/logging/log4j/perf/jmh/AsyncAppenderLog4j2Benchmark.java b/log4j-perf/src/main/java/org/apache/logging/log4j/perf/jmh/AsyncAppenderLog4j2Benchmark.java new file mode 100644 index 0000000..523b029 --- /dev/null +++ b/log4j-perf/src/main/java/org/apache/logging/log4j/perf/jmh/AsyncAppenderLog4j2Benchmark.java @@ -0,0 +1,101 @@ +/* + * 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.perf.jmh; + +import java.io.File; +import java.util.Arrays; +import java.util.concurrent.TimeUnit; + +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; +import org.apache.logging.log4j.core.LifeCycle; +import org.openjdk.jmh.annotations.Benchmark; +import org.openjdk.jmh.annotations.BenchmarkMode; +import org.openjdk.jmh.annotations.Level; +import org.openjdk.jmh.annotations.Mode; +import org.openjdk.jmh.annotations.OutputTimeUnit; +import org.openjdk.jmh.annotations.Scope; +import org.openjdk.jmh.annotations.Setup; +import org.openjdk.jmh.annotations.State; +import org.openjdk.jmh.annotations.TearDown; + +/** + * Tests Log4j2 Async Appender performance. + */ +// ============================== HOW TO RUN THIS TEST: ==================================== +// +// single thread: +// java -jar log4j-perf/target/benchmarks.jar ".*Async.*Benchmark.*" -f 1 -wi 5 -i 5 +// +// multiple threads (for example, 4 threads): +// java -jar log4j-perf/target/benchmarks.jar ".*Async.*Benchmark.*" -f 1 -wi 5 -i 5 -t 4 -si true +// +// Usage help: +// java -jar log4j-perf/target/benchmarks.jar -help +// +public class AsyncAppenderLog4j2Benchmark { + final static char[] CHARS = new char[500]; + static { + Arrays.fill(CHARS, 'a'); + } + final static String TEST = new String(CHARS); + + @State(Scope.Benchmark) + public static class NormalState { + Logger logger; + + @Setup(Level.Trial) + public void up() { + System.setProperty("log4j.configurationFile", "perf5AsyncApndNoLoc.xml"); + logger = LogManager.getLogger(getClass()); + } + + @TearDown(Level.Trial) + public void down() { + ((LifeCycle) LogManager.getContext(false)).stop(); + new File("perftest.log").delete(); + } + } + + @Benchmark + @BenchmarkMode(Mode.Throughput) + @OutputTimeUnit(TimeUnit.SECONDS) + public boolean throughputBaseline(final NormalState e) { + return e.logger.isInfoEnabled(); + } + + @Benchmark + @BenchmarkMode(Mode.Throughput) + @OutputTimeUnit(TimeUnit.SECONDS) + public void throughput(final NormalState e) { + e.logger.info(TEST); + } + + @Benchmark + @BenchmarkMode(Mode.SampleTime) + @OutputTimeUnit(TimeUnit.NANOSECONDS) + public boolean latencyBaseline(final NormalState e) { + return e.logger.isInfoEnabled(); + } + + @Benchmark + @BenchmarkMode(Mode.SampleTime) + @OutputTimeUnit(TimeUnit.NANOSECONDS) + public void latency(final NormalState e) { + e.logger.info(TEST); + } +} http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/c154460b/log4j-perf/src/main/java/org/apache/logging/log4j/perf/jmh/AsyncAppenderLogbackBenchmark.java ---------------------------------------------------------------------- diff --git a/log4j-perf/src/main/java/org/apache/logging/log4j/perf/jmh/AsyncAppenderLogbackBenchmark.java b/log4j-perf/src/main/java/org/apache/logging/log4j/perf/jmh/AsyncAppenderLogbackBenchmark.java new file mode 100644 index 0000000..ea4f2df --- /dev/null +++ b/log4j-perf/src/main/java/org/apache/logging/log4j/perf/jmh/AsyncAppenderLogbackBenchmark.java @@ -0,0 +1,103 @@ +/* + * 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.perf.jmh; + +import java.io.File; +import java.util.Arrays; +import java.util.concurrent.TimeUnit; + +import org.openjdk.jmh.annotations.Benchmark; +import org.openjdk.jmh.annotations.BenchmarkMode; +import org.openjdk.jmh.annotations.Level; +import org.openjdk.jmh.annotations.Mode; +import org.openjdk.jmh.annotations.OutputTimeUnit; +import org.openjdk.jmh.annotations.Scope; +import org.openjdk.jmh.annotations.Setup; +import org.openjdk.jmh.annotations.State; +import org.openjdk.jmh.annotations.TearDown; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import ch.qos.logback.core.spi.LifeCycle; + +/** + * Tests Logback Async Appender performance. + */ +// ============================== HOW TO RUN THIS TEST: ==================================== +// +// single thread: +// java -jar log4j-perf/target/benchmarks.jar ".*Async.*Benchmark.*" -f 1 -wi 5 -i 5 +// +// multiple threads (for example, 4 threads): +// java -jar log4j-perf/target/benchmarks.jar ".*Async.*Benchmark.*" -f 1 -wi 5 -i 5 -t 4 -si true +// +// Usage help: +// java -jar log4j-perf/target/benchmarks.jar -help +// +public class AsyncAppenderLogbackBenchmark { + + final static char[] CHARS = new char[500]; + static { + Arrays.fill(CHARS, 'a'); + } + final static String TEST = new String(CHARS); + + @State(Scope.Benchmark) + public static class NormalState { + Logger logger; + + @Setup(Level.Trial) + public void up() { + System.setProperty("logback.configurationFile", "perf-logback-async.xml"); + logger = (Logger) LoggerFactory.getLogger(getClass()); + } + + @TearDown(Level.Trial) + public void down() { + ((LifeCycle) LoggerFactory.getILoggerFactory()).stop(); + new File("perftest.log").delete(); + } + } + + @Benchmark + @BenchmarkMode(Mode.Throughput) + @OutputTimeUnit(TimeUnit.SECONDS) + public boolean throughputBaseline(final NormalState e) { + return e.logger.isInfoEnabled(); + } + + @Benchmark + @BenchmarkMode(Mode.Throughput) + @OutputTimeUnit(TimeUnit.SECONDS) + public void throughput(final NormalState e) { + e.logger.info(TEST); + } + + @Benchmark + @BenchmarkMode(Mode.SampleTime) + @OutputTimeUnit(TimeUnit.NANOSECONDS) + public boolean latencyBaseline(final NormalState e) { + return e.logger.isInfoEnabled(); + } + + @Benchmark + @BenchmarkMode(Mode.SampleTime) + @OutputTimeUnit(TimeUnit.NANOSECONDS) + public void latency(final NormalState e) { + e.logger.info(TEST); + } +} http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/c154460b/log4j-perf/src/main/java/org/apache/logging/log4j/perf/jmh/Log4j1AsyncAppenderBenchmark.java ---------------------------------------------------------------------- diff --git a/log4j-perf/src/main/java/org/apache/logging/log4j/perf/jmh/Log4j1AsyncAppenderBenchmark.java b/log4j-perf/src/main/java/org/apache/logging/log4j/perf/jmh/Log4j1AsyncAppenderBenchmark.java deleted file mode 100644 index 4915afd..0000000 --- a/log4j-perf/src/main/java/org/apache/logging/log4j/perf/jmh/Log4j1AsyncAppenderBenchmark.java +++ /dev/null @@ -1,101 +0,0 @@ -/* - * 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.perf.jmh; - -import java.io.File; -import java.util.Arrays; -import java.util.concurrent.TimeUnit; - -import org.apache.log4j.LogManager; -import org.apache.log4j.Logger; -import org.openjdk.jmh.annotations.Benchmark; -import org.openjdk.jmh.annotations.BenchmarkMode; -import org.openjdk.jmh.annotations.Level; -import org.openjdk.jmh.annotations.Mode; -import org.openjdk.jmh.annotations.OutputTimeUnit; -import org.openjdk.jmh.annotations.Scope; -import org.openjdk.jmh.annotations.Setup; -import org.openjdk.jmh.annotations.State; -import org.openjdk.jmh.annotations.TearDown; - -/** - * Tests Log4j-1.2 Async Appender performance. - */ -// ============================== HOW TO RUN THIS TEST: ==================================== -// -// single thread: -// java -jar log4j-perf/target/benchmarks.jar ".*Async.*Benchmark.*" -f 1 -wi 5 -i 5 -// -// multiple threads (for example, 4 threads): -// java -jar log4j-perf/target/benchmarks.jar ".*Async.*Benchmark.*" -f 1 -wi 5 -i 5 -t 4 -si true -// -// Usage help: -// java -jar log4j-perf/target/benchmarks.jar -help -// -public class Log4j1AsyncAppenderBenchmark { - - final static char[] CHARS = new char[500]; - static { - Arrays.fill(CHARS, 'a'); - } - final static String TEST = new String(CHARS); - - @State(Scope.Benchmark) - public static class NormalState { - Logger logger; - - @Setup(Level.Trial) - public void up() { - System.setProperty("log4j.configuration", "perf-log4j12-async.xml"); - logger = LogManager.getLogger(getClass()); - } - - @TearDown(Level.Trial) - public void down() { - LogManager.shutdown(); - new File("perftest.log").delete(); - } - } - - @Benchmark - @BenchmarkMode(Mode.Throughput) - @OutputTimeUnit(TimeUnit.SECONDS) - public boolean throughputBaseline(final NormalState e) { - return e.logger.isInfoEnabled(); - } - - @Benchmark - @BenchmarkMode(Mode.Throughput) - @OutputTimeUnit(TimeUnit.SECONDS) - public void throughput(final NormalState e) { - e.logger.info(TEST); - } - - @Benchmark - @BenchmarkMode(Mode.SampleTime) - @OutputTimeUnit(TimeUnit.NANOSECONDS) - public boolean latencyBaseline(final NormalState e) { - return e.logger.isInfoEnabled(); - } - - @Benchmark - @BenchmarkMode(Mode.SampleTime) - @OutputTimeUnit(TimeUnit.NANOSECONDS) - public void latency(final NormalState e) { - e.logger.info(TEST); - } -} http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/c154460b/log4j-perf/src/main/java/org/apache/logging/log4j/perf/jmh/Log4j2AsyncAppenderBenchmark.java ---------------------------------------------------------------------- diff --git a/log4j-perf/src/main/java/org/apache/logging/log4j/perf/jmh/Log4j2AsyncAppenderBenchmark.java b/log4j-perf/src/main/java/org/apache/logging/log4j/perf/jmh/Log4j2AsyncAppenderBenchmark.java deleted file mode 100644 index d72288a..0000000 --- a/log4j-perf/src/main/java/org/apache/logging/log4j/perf/jmh/Log4j2AsyncAppenderBenchmark.java +++ /dev/null @@ -1,101 +0,0 @@ -/* - * 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.perf.jmh; - -import java.io.File; -import java.util.Arrays; -import java.util.concurrent.TimeUnit; - -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; -import org.apache.logging.log4j.core.LifeCycle; -import org.openjdk.jmh.annotations.Benchmark; -import org.openjdk.jmh.annotations.BenchmarkMode; -import org.openjdk.jmh.annotations.Level; -import org.openjdk.jmh.annotations.Mode; -import org.openjdk.jmh.annotations.OutputTimeUnit; -import org.openjdk.jmh.annotations.Scope; -import org.openjdk.jmh.annotations.Setup; -import org.openjdk.jmh.annotations.State; -import org.openjdk.jmh.annotations.TearDown; - -/** - * Tests Log4j2 Async Appender performance. - */ -// ============================== HOW TO RUN THIS TEST: ==================================== -// -// single thread: -// java -jar log4j-perf/target/benchmarks.jar ".*Async.*Benchmark.*" -f 1 -wi 5 -i 5 -// -// multiple threads (for example, 4 threads): -// java -jar log4j-perf/target/benchmarks.jar ".*Async.*Benchmark.*" -f 1 -wi 5 -i 5 -t 4 -si true -// -// Usage help: -// java -jar log4j-perf/target/benchmarks.jar -help -// -public class Log4j2AsyncAppenderBenchmark { - final static char[] CHARS = new char[500]; - static { - Arrays.fill(CHARS, 'a'); - } - final static String TEST = new String(CHARS); - - @State(Scope.Benchmark) - public static class NormalState { - Logger logger; - - @Setup(Level.Trial) - public void up() { - System.setProperty("log4j.configurationFile", "perf5AsyncApndNoLoc.xml"); - logger = LogManager.getLogger(getClass()); - } - - @TearDown(Level.Trial) - public void down() { - ((LifeCycle) LogManager.getContext(false)).stop(); - new File("perftest.log").delete(); - } - } - - @Benchmark - @BenchmarkMode(Mode.Throughput) - @OutputTimeUnit(TimeUnit.SECONDS) - public boolean throughputBaseline(final NormalState e) { - return e.logger.isInfoEnabled(); - } - - @Benchmark - @BenchmarkMode(Mode.Throughput) - @OutputTimeUnit(TimeUnit.SECONDS) - public void throughput(final NormalState e) { - e.logger.info(TEST); - } - - @Benchmark - @BenchmarkMode(Mode.SampleTime) - @OutputTimeUnit(TimeUnit.NANOSECONDS) - public boolean latencyBaseline(final NormalState e) { - return e.logger.isInfoEnabled(); - } - - @Benchmark - @BenchmarkMode(Mode.SampleTime) - @OutputTimeUnit(TimeUnit.NANOSECONDS) - public void latency(final NormalState e) { - e.logger.info(TEST); - } -} http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/c154460b/log4j-perf/src/main/java/org/apache/logging/log4j/perf/jmh/LogbackAsyncAppenderBenchmark.java ---------------------------------------------------------------------- diff --git a/log4j-perf/src/main/java/org/apache/logging/log4j/perf/jmh/LogbackAsyncAppenderBenchmark.java b/log4j-perf/src/main/java/org/apache/logging/log4j/perf/jmh/LogbackAsyncAppenderBenchmark.java deleted file mode 100644 index bc20303..0000000 --- a/log4j-perf/src/main/java/org/apache/logging/log4j/perf/jmh/LogbackAsyncAppenderBenchmark.java +++ /dev/null @@ -1,103 +0,0 @@ -/* - * 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.perf.jmh; - -import java.io.File; -import java.util.Arrays; -import java.util.concurrent.TimeUnit; - -import org.openjdk.jmh.annotations.Benchmark; -import org.openjdk.jmh.annotations.BenchmarkMode; -import org.openjdk.jmh.annotations.Level; -import org.openjdk.jmh.annotations.Mode; -import org.openjdk.jmh.annotations.OutputTimeUnit; -import org.openjdk.jmh.annotations.Scope; -import org.openjdk.jmh.annotations.Setup; -import org.openjdk.jmh.annotations.State; -import org.openjdk.jmh.annotations.TearDown; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import ch.qos.logback.core.spi.LifeCycle; - -/** - * Tests Logback Async Appender performance. - */ -// ============================== HOW TO RUN THIS TEST: ==================================== -// -// single thread: -// java -jar log4j-perf/target/benchmarks.jar ".*Async.*Benchmark.*" -f 1 -wi 5 -i 5 -// -// multiple threads (for example, 4 threads): -// java -jar log4j-perf/target/benchmarks.jar ".*Async.*Benchmark.*" -f 1 -wi 5 -i 5 -t 4 -si true -// -// Usage help: -// java -jar log4j-perf/target/benchmarks.jar -help -// -public class LogbackAsyncAppenderBenchmark { - - final static char[] CHARS = new char[500]; - static { - Arrays.fill(CHARS, 'a'); - } - final static String TEST = new String(CHARS); - - @State(Scope.Benchmark) - public static class NormalState { - Logger logger; - - @Setup(Level.Trial) - public void up() { - System.setProperty("logback.configurationFile", "perf-logback-async.xml"); - logger = (Logger) LoggerFactory.getLogger(getClass()); - } - - @TearDown(Level.Trial) - public void down() { - ((LifeCycle) LoggerFactory.getILoggerFactory()).stop(); - new File("perftest.log").delete(); - } - } - - @Benchmark - @BenchmarkMode(Mode.Throughput) - @OutputTimeUnit(TimeUnit.SECONDS) - public boolean throughputBaseline(final NormalState e) { - return e.logger.isInfoEnabled(); - } - - @Benchmark - @BenchmarkMode(Mode.Throughput) - @OutputTimeUnit(TimeUnit.SECONDS) - public void throughput(final NormalState e) { - e.logger.info(TEST); - } - - @Benchmark - @BenchmarkMode(Mode.SampleTime) - @OutputTimeUnit(TimeUnit.NANOSECONDS) - public boolean latencyBaseline(final NormalState e) { - return e.logger.isInfoEnabled(); - } - - @Benchmark - @BenchmarkMode(Mode.SampleTime) - @OutputTimeUnit(TimeUnit.NANOSECONDS) - public void latency(final NormalState e) { - e.logger.info(TEST); - } -}
