36
37 @State(value = Scope.Benchmark)
38 @BenchmarkMode(Mode.AverageTime)
39 @OutputTimeUnit(TimeUnit.NANOSECONDS)
40 public class LoggingRuntimeMicros {
41
42 // TestStack will add this number of calls to the call stack
43 @Param({"4", "100", "1000"})
44 // For more thorough testing, consider:
45 // @Param({"4", "10", "100", "256", "1000"})
46 public int depth;
47
48 /** Logging handler for testing logging calls. */
49 @State(value = Scope.Thread) // create a separate one for each worker thread
50 public static class TestHandler extends java.util.logging.Handler {
51 private final static AtomicInteger serialNum = new AtomicInteger(0);
52
53 private final java.util.logging.Logger logger;
54 private volatile LogRecord record;
55
56 public TestHandler() {
57 // Each instance uses its own logger
58 logger = java.util.logging.Logger.getLogger("StackWalkBench" + serialNum.incrementAndGet());
59 logger.setUseParentHandlers(false);
60 logger.addHandler(this);
61 }
62
63 @Override
64 public void publish(LogRecord record) {
65 record.getSourceMethodName();
66 this.record = record;
67 }
68
69 private LogRecord reset() {
70 LogRecord record = this.record;
71 this.record = null;
72 return record;
73 }
74
75 public final LogRecord testInferCaller(String msg) {
|
36
37 @State(value = Scope.Benchmark)
38 @BenchmarkMode(Mode.AverageTime)
39 @OutputTimeUnit(TimeUnit.NANOSECONDS)
40 public class LoggingRuntimeMicros {
41
42 // TestStack will add this number of calls to the call stack
43 @Param({"4", "100", "1000"})
44 // For more thorough testing, consider:
45 // @Param({"4", "10", "100", "256", "1000"})
46 public int depth;
47
48 /** Logging handler for testing logging calls. */
49 @State(value = Scope.Thread) // create a separate one for each worker thread
50 public static class TestHandler extends java.util.logging.Handler {
51 private final static AtomicInteger serialNum = new AtomicInteger(0);
52
53 private final java.util.logging.Logger logger;
54 private volatile LogRecord record;
55
56 @SuppressWarnings("initialization")
57 public TestHandler() {
58 // Each instance uses its own logger
59 logger = java.util.logging.Logger.getLogger("StackWalkBench" + serialNum.incrementAndGet());
60 logger.setUseParentHandlers(false);
61 logger.addHandler(this);
62 }
63
64 @Override
65 public void publish(LogRecord record) {
66 record.getSourceMethodName();
67 this.record = record;
68 }
69
70 private LogRecord reset() {
71 LogRecord record = this.record;
72 this.record = null;
73 return record;
74 }
75
76 public final LogRecord testInferCaller(String msg) {
|