27 import org.openjdk.jmh.annotations.Warmup; 28 29 import org.graalvm.compiler.core.common.alloc.BiDirectionalTraceBuilder; 30 import org.graalvm.compiler.core.common.alloc.TraceBuilderResult; 31 import org.graalvm.compiler.core.common.alloc.UniDirectionalTraceBuilder; 32 import org.graalvm.compiler.lir.alloc.trace.TraceBuilderPhase; 33 import org.graalvm.compiler.microbenchmarks.graal.GraalBenchmark; 34 35 @Warmup(iterations = 15) 36 public class TraceBuilderBenchmark extends GraalBenchmark { 37 38 public static class State extends ControlFlowGraphState { 39 @MethodDescString @Param({ 40 "java.lang.String#equals", 41 "java.util.HashMap#computeIfAbsent" 42 }) public String method; 43 } 44 45 @Benchmark 46 public TraceBuilderResult uniDirectionalTraceBuilder(State s) { 47 return UniDirectionalTraceBuilder.computeTraces(s.cfg.getStartBlock(), s.cfg.getBlocks(), TraceBuilderPhase.getTrivialTracePredicate(s.getLIR())); 48 } 49 50 @Benchmark 51 public TraceBuilderResult biDirectionalTraceBuilder(State s) { 52 return BiDirectionalTraceBuilder.computeTraces(s.cfg.getStartBlock(), s.cfg.getBlocks(), TraceBuilderPhase.getTrivialTracePredicate(s.getLIR())); 53 } 54 55 } | 27 import org.openjdk.jmh.annotations.Warmup; 28 29 import org.graalvm.compiler.core.common.alloc.BiDirectionalTraceBuilder; 30 import org.graalvm.compiler.core.common.alloc.TraceBuilderResult; 31 import org.graalvm.compiler.core.common.alloc.UniDirectionalTraceBuilder; 32 import org.graalvm.compiler.lir.alloc.trace.TraceBuilderPhase; 33 import org.graalvm.compiler.microbenchmarks.graal.GraalBenchmark; 34 35 @Warmup(iterations = 15) 36 public class TraceBuilderBenchmark extends GraalBenchmark { 37 38 public static class State extends ControlFlowGraphState { 39 @MethodDescString @Param({ 40 "java.lang.String#equals", 41 "java.util.HashMap#computeIfAbsent" 42 }) public String method; 43 } 44 45 @Benchmark 46 public TraceBuilderResult uniDirectionalTraceBuilder(State s) { 47 return UniDirectionalTraceBuilder.computeTraces(s.getLIR().getDebug(), s.cfg.getStartBlock(), s.cfg.getBlocks(), TraceBuilderPhase.getTrivialTracePredicate(s.getLIR())); 48 } 49 50 @Benchmark 51 public TraceBuilderResult biDirectionalTraceBuilder(State s) { 52 return BiDirectionalTraceBuilder.computeTraces(s.getLIR().getDebug(), s.cfg.getStartBlock(), s.cfg.getBlocks(), TraceBuilderPhase.getTrivialTracePredicate(s.getLIR())); 53 } 54 55 } |