1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 package org.apache.logging.log4j.perf.jmh;
19
20 import org.apache.logging.log4j.LogManager;
21 import org.apache.logging.log4j.Logger;
22 import org.openjdk.jmh.annotations.GenerateMicroBenchmark;
23 import org.openjdk.jmh.annotations.Scope;
24 import org.openjdk.jmh.annotations.Setup;
25 import org.openjdk.jmh.annotations.State;
26 import org.openjdk.jmh.annotations.TearDown;
27 import org.slf4j.LoggerFactory;
28
29
30
31
32
33
34
35
36
37 @State(Scope.Thread)
38 public class DebugDisabledBenchmark {
39 Logger log4jLogger;
40 org.slf4j.Logger slf4jLogger;
41 org.apache.log4j.Logger log4jClassicLogger;
42 Integer j;
43
44 @Setup
45 public void setUp() {
46 System.setProperty("log4j.configurationFile", "log4j2-perf2.xml");
47 System.setProperty("log4j.configuration", "log4j12-perf2.xml");
48 System.setProperty("logback.configurationFile", "logback-perf2.xml");
49
50 log4jLogger = LogManager.getLogger(DebugDisabledBenchmark.class);
51 slf4jLogger = LoggerFactory.getLogger(DebugDisabledBenchmark.class);
52 log4jClassicLogger = org.apache.log4j.Logger.getLogger(DebugDisabledBenchmark.class);
53 j = new Integer(2);
54 }
55
56 @TearDown
57 public void tearDown() {
58 System.clearProperty("log4j.configurationFile");
59 System.clearProperty("log4j.configuration");
60 System.clearProperty("logback.configurationFile");
61 }
62
63 @GenerateMicroBenchmark
64 public boolean baseline() {
65 return true;
66 }
67
68 @GenerateMicroBenchmark
69 public boolean log4jIsDebugEnabled() {
70 return log4jLogger.isDebugEnabled();
71 }
72
73 @GenerateMicroBenchmark
74 public boolean slf4jIsDebugEnabled() {
75 return slf4jLogger.isDebugEnabled();
76 }
77
78 @GenerateMicroBenchmark
79 public boolean log4jClassicIsDebugEnabled() {
80 return log4jClassicLogger.isDebugEnabled();
81 }
82
83 @GenerateMicroBenchmark
84 public void log4jDebugStringConcatenation() {
85 log4jLogger.debug("This is a debug [" + j + "] message");
86 }
87
88 @GenerateMicroBenchmark
89 public void slf4jDebugStringConcatenation() {
90 slf4jLogger.debug("This is a debug [" + j + "] message");
91 }
92
93 @GenerateMicroBenchmark
94 public void log4jClassicDebugStringConcatenation() {
95 log4jClassicLogger.debug("This is a debug [" + j + "] message");
96 }
97
98 @GenerateMicroBenchmark
99 public void log4jDebugParameterizedString() {
100 log4jLogger.debug("This is a debug [{}] message", j);
101 }
102
103 @GenerateMicroBenchmark
104 public void slf4jDebugParameterizedString() {
105 slf4jLogger.debug("This is a debug [{}] message", j);
106 }
107 }