This is an automated email from the ASF dual-hosted git repository.
vy pushed a commit to branch message-param-formatter-rewrite
in repository https://gitbox.apache.org/repos/asf/logging-log4j2.git
The following commit(s) were added to
refs/heads/message-param-formatter-rewrite by this push:
new 765d1d6c78 Fix `ParameterFormatterBenchmark`
765d1d6c78 is described below
commit 765d1d6c78412025ebd4faa3519b7afd0ea0906c
Author: Volkan Yazıcı <[email protected]>
AuthorDate: Mon Jul 31 16:57:21 2023 +0200
Fix `ParameterFormatterBenchmark`
---
.../log4j/message/ParameterFormatterBenchmark.java | 136 ++++++++-------------
1 file changed, 52 insertions(+), 84 deletions(-)
diff --git
a/log4j-perf/src/main/java/org/apache/logging/log4j/message/ParameterFormatterBenchmark.java
b/log4j-perf/src/main/java/org/apache/logging/log4j/message/ParameterFormatterBenchmark.java
index 9c52d03a49..669507d344 100644
---
a/log4j-perf/src/main/java/org/apache/logging/log4j/message/ParameterFormatterBenchmark.java
+++
b/log4j-perf/src/main/java/org/apache/logging/log4j/message/ParameterFormatterBenchmark.java
@@ -16,7 +16,13 @@
*/
package org.apache.logging.log4j.message;
+import java.util.concurrent.TimeUnit;
+import
org.apache.logging.log4j.message.ParameterFormatter.MessagePatternAnalysis;
+import org.openjdk.jmh.annotations.Benchmark;
+import org.openjdk.jmh.annotations.BenchmarkMode;
+import org.openjdk.jmh.annotations.Mode;
+import org.openjdk.jmh.annotations.OutputTimeUnit;
import org.openjdk.jmh.annotations.Scope;
import org.openjdk.jmh.annotations.State;
@@ -36,93 +42,55 @@ import org.openjdk.jmh.annotations.State;
//
@State(Scope.Benchmark)
public class ParameterFormatterBenchmark {
- private static final Object[] ARGS = { "arg1", "arg2", "arg3", "arg4",
"arg5", "arg6", "arg7", "arg8",
- "arg9", "arg10",};
+
+ private static final Object[] ARGS = {"arg1", "arg2", "arg3", "arg4",
"arg5", "arg6", "arg7", "arg8", "arg9", "arg10"};
@State(Scope.Thread)
public static class ThreadState {
- StringBuilder buffer = new StringBuilder(2048);
- int[] indices = new int[255];
- char[] copy = new char[4096];
+
+ private final MessagePatternAnalysis analysis = new
MessagePatternAnalysis();
+
+ private final StringBuilder buffer = new StringBuilder(2048);
+
+ public ThreadState() {
+ analysis.placeholderCharIndices = new int[9];
+ }
+
+ }
+
+ @Benchmark
+ @BenchmarkMode(Mode.SampleTime)
+ @OutputTimeUnit(TimeUnit.NANOSECONDS)
+ public int latency3ParamsVy(final ThreadState state) {
+ return latencyParamsVy(state, "p1={}, p2={}, p3={}");
+ }
+
+ @Benchmark
+ @BenchmarkMode(Mode.SampleTime)
+ @OutputTimeUnit(TimeUnit.NANOSECONDS)
+ public int latency5ParamsVy(final ThreadState state) {
+ return latencyParamsVy(state, "p1={}, p2={}, p3={}, p4={}, p5={}");
+ }
+
+ @Benchmark
+ @BenchmarkMode(Mode.SampleTime)
+ @OutputTimeUnit(TimeUnit.NANOSECONDS)
+ public int latency7ParamsVy(final ThreadState state) {
+ return latencyParamsVy(state, "p1={}, p2={}, p3={}, p4={}, p5={},
p6={}, p7={}");
+ }
+
+ @Benchmark
+ @BenchmarkMode(Mode.SampleTime)
+ @OutputTimeUnit(TimeUnit.NANOSECONDS)
+ public int latency9ParamsVy(final ThreadState state) {
+ return latencyParamsVy(state, "p1={}, p2={}, p3={}, p4={}, p5={},
p6={}, p7={}, p8={}, p9={}");
+ }
+
+ private static int latencyParamsVy(final ThreadState state, final String
pattern) {
+ state.buffer.setLength(0);
+ ParameterFormatter.analyzePattern(pattern, state.analysis);
+ ParameterFormatter.formatMessage(state.buffer, pattern, ARGS,
state.analysis.placeholderCount, state.analysis);
+ return state.buffer.length();
}
-// @Benchmark
-// @BenchmarkMode(Mode.SampleTime)
-// @OutputTimeUnit(TimeUnit.NANOSECONDS)
-// public int latency3ParamsV2(final ThreadState state) {
-// state.buffer.setLength(0);
-// final int count = ParameterFormatter.analyzePattern("p1={}, p2={},
p3={}", state.indices);
-// ParameterFormatter.formatMessage2(state.buffer, "p1={}, p2={},
p3={}", ARGS, count, state.indices);
-// return state.buffer.length();
-// }
-//
-// @Benchmark
-// @BenchmarkMode(Mode.SampleTime)
-// @OutputTimeUnit(TimeUnit.NANOSECONDS)
-// public int latency5ParamsV2(final ThreadState state) {
-// state.buffer.setLength(0);
-// final int count = ParameterFormatter.analyzePattern("p1={}, p2={},
p3={}, p4={}, p5={}", state.indices);
-// ParameterFormatter.formatMessage2(state.buffer, "p1={}, p2={},
p3={}, p4={}, p5={}", ARGS, count, state.indices);
-// return state.buffer.length();
-// }
-//
-// @Benchmark
-// @BenchmarkMode(Mode.SampleTime)
-// @OutputTimeUnit(TimeUnit.NANOSECONDS)
-// public int latency7ParamsV2(final ThreadState state) {
-// state.buffer.setLength(0);
-// final int count = ParameterFormatter.analyzePattern("p1={}, p2={},
p3={}, p4={}, p5={}, p6={}, p7={}", state.indices);
-// ParameterFormatter.formatMessage2(state.buffer, "p1={}, p2={},
p3={}, p4={}, p5={}, p6={}, p7={}", ARGS, count, state.indices);
-// return state.buffer.length();
-// }
-//
-// @Benchmark
-// @BenchmarkMode(Mode.SampleTime)
-// @OutputTimeUnit(TimeUnit.NANOSECONDS)
-// public int latency9ParamsV2(final ThreadState state) {
-// state.buffer.setLength(0);
-// final int count = ParameterFormatter.analyzePattern("p1={}, p2={},
p3={}, p4={}, p5={}, p6={}, p7={}, p8={}, p9={}", state.indices);
-// ParameterFormatter.formatMessage2(state.buffer, "p1={}, p2={},
p3={}, p4={}, p5={}, p6={}, p7={}, p8={}, p9={}", ARGS, count, state.indices);
-// return state.buffer.length();
-// }
-//
-// @Benchmark
-// @BenchmarkMode(Mode.SampleTime)
-// @OutputTimeUnit(TimeUnit.NANOSECONDS)
-// public int latency3Params(final ThreadState state) {
-// state.buffer.setLength(0);
-// final int count = ParameterFormatter.analyzePattern("p1={}, p2={},
p3={}");
-// ParameterFormatter.formatMessage(state.buffer, "p1={}, p2={},
p3={}", ARGS, count);
-// return state.buffer.length();
-// }
-//
-// @Benchmark
-// @BenchmarkMode(Mode.SampleTime)
-// @OutputTimeUnit(TimeUnit.NANOSECONDS)
-// public int latency5Params(final ThreadState state) {
-// state.buffer.setLength(0);
-// final int count = ParameterFormatter.analyzePattern("p1={}, p2={},
p3={}, p4={}, p5={}");
-// ParameterFormatter.formatMessage(state.buffer, "p1={}, p2={}, p3={},
p4={}, p5={}", ARGS, count);
-// return state.buffer.length();
-// }
-//
-// @Benchmark
-// @BenchmarkMode(Mode.SampleTime)
-// @OutputTimeUnit(TimeUnit.NANOSECONDS)
-// public int latency7Params(final ThreadState state) {
-// state.buffer.setLength(0);
-// final int count = ParameterFormatter.analyzePattern("p1={}, p2={},
p3={}, p4={}, p5={}, p6={}, p7={}");
-// ParameterFormatter.formatMessage(state.buffer, "p1={}, p2={}, p3={},
p4={}, p5={}, p6={}, p7={}", ARGS, count);
-// return state.buffer.length();
-// }
-//
-// @Benchmark
-// @BenchmarkMode(Mode.SampleTime)
-// @OutputTimeUnit(TimeUnit.NANOSECONDS)
-// public int latency9Params(final ThreadState state) {
-// state.buffer.setLength(0);
-// final int count = ParameterFormatter.analyzePattern("p1={}, p2={},
p3={}, p4={}, p5={}, p6={}, p7={}, p8={}, p9={}");
-// ParameterFormatter.formatMessage(state.buffer, "p1={}, p2={}, p3={},
p4={}, p5={}, p6={}, p7={}, p8={}, p9={}", ARGS, count);
-// return state.buffer.length();
-// }
}