src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.microbenchmarks/src/org/graalvm/compiler/microbenchmarks/graal/SchedulePhaseBenchmark.java
changeset 48861 47f19ff9903c
parent 47216 71c04702a3d5
child 50858 2d3e99a72541
--- a/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.microbenchmarks/src/org/graalvm/compiler/microbenchmarks/graal/SchedulePhaseBenchmark.java	Fri Feb 02 10:37:48 2018 -0500
+++ b/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.microbenchmarks/src/org/graalvm/compiler/microbenchmarks/graal/SchedulePhaseBenchmark.java	Fri Feb 02 17:28:17 2018 -0800
@@ -24,7 +24,9 @@
 
 import java.util.Arrays;
 
+import org.graalvm.compiler.phases.schedule.SchedulePhase;
 import org.openjdk.jmh.annotations.Benchmark;
+import org.openjdk.jmh.annotations.Measurement;
 import org.openjdk.jmh.annotations.Warmup;
 
 import org.graalvm.compiler.microbenchmarks.graal.util.MethodSpec;
@@ -32,7 +34,8 @@
 import org.graalvm.compiler.nodes.cfg.ControlFlowGraph;
 import org.graalvm.compiler.phases.schedule.SchedulePhase.SchedulingStrategy;
 
-@Warmup(iterations = 15)
+@Warmup(iterations = 20)
+@Measurement(iterations = 10)
 public class SchedulePhaseBenchmark extends GraalBenchmark {
 
     @MethodSpec(declaringClass = String.class, name = "equals")
@@ -117,5 +120,67 @@
     public void intersection_EARLIEST_OPTIMAL(IntersectionState_EARLIEST_OPTIMAL s) {
         s.schedule.apply(s.graph);
     }
+
+    @MethodSpec(declaringClass = SchedulePhaseBenchmark.class, name = "intersectionSnippet")
+    public static class IntersectionState_EARLIEST_WITH_GUARD_ORDER_OPTIMAL extends ScheduleState {
+        public IntersectionState_EARLIEST_WITH_GUARD_ORDER_OPTIMAL() {
+            super(SchedulingStrategy.EARLIEST_WITH_GUARD_ORDER);
+        }
+    }
+
+    @Benchmark
+    public void intersection_EARLIEST_WITH_GUARD_ORDER_OPTIMAL(IntersectionState_EARLIEST_WITH_GUARD_ORDER_OPTIMAL s) {
+        s.schedule.apply(s.graph);
+    }
+    // Checkstyle: resume method name check
+
+    // Checkstyle: stop method name check
+    @MethodSpec(declaringClass = SchedulePhase.Instance.class, name = "scheduleEarliestIterative")
+    public static class ScheduleEarliestIterative_LATEST_OPTIMAL extends ScheduleState {
+        public ScheduleEarliestIterative_LATEST_OPTIMAL() {
+            super(SchedulingStrategy.LATEST);
+        }
+    }
+
+    @Benchmark
+    public void scheduleEarliestIterative_LATEST_OPTIMAL(ScheduleEarliestIterative_LATEST_OPTIMAL s) {
+        s.schedule.apply(s.graph);
+    }
+
+    @MethodSpec(declaringClass = SchedulePhase.Instance.class, name = "scheduleEarliestIterative")
+    public static class ScheduleEarliestIterative_LATEST_OUT_OF_LOOPS_OPTIMAL extends ScheduleState {
+        public ScheduleEarliestIterative_LATEST_OUT_OF_LOOPS_OPTIMAL() {
+            super(SchedulingStrategy.LATEST_OUT_OF_LOOPS);
+        }
+    }
+
+    @Benchmark
+    public void scheduleEarliestIterative_LATEST_OUT_OF_LOOPS_OPTIMAL(ScheduleEarliestIterative_LATEST_OUT_OF_LOOPS_OPTIMAL s) {
+        s.schedule.apply(s.graph);
+    }
+
+    @MethodSpec(declaringClass = SchedulePhase.Instance.class, name = "scheduleEarliestIterative")
+    public static class ScheduleEarliestIterative_EARLIEST_OPTIMAL extends ScheduleState {
+        public ScheduleEarliestIterative_EARLIEST_OPTIMAL() {
+            super(SchedulingStrategy.EARLIEST);
+        }
+    }
+
+    @Benchmark
+    public void scheduleEarliestIterative_EARLIEST_OPTIMAL(ScheduleEarliestIterative_EARLIEST_OPTIMAL s) {
+        s.schedule.apply(s.graph);
+    }
+
+    @MethodSpec(declaringClass = SchedulePhase.Instance.class, name = "scheduleEarliestIterative")
+    public static class ScheduleEarliestIterative_EARLIEST_WITH_GUARD_ORDER_OPTIMAL extends ScheduleState {
+        public ScheduleEarliestIterative_EARLIEST_WITH_GUARD_ORDER_OPTIMAL() {
+            super(SchedulingStrategy.EARLIEST_WITH_GUARD_ORDER);
+        }
+    }
+
+    @Benchmark
+    public void scheduleEarliestIterative_EARLIEST_WITH_GUARD_ORDER_OPTIMAL(ScheduleEarliestIterative_EARLIEST_WITH_GUARD_ORDER_OPTIMAL s) {
+        s.schedule.apply(s.graph);
+    }
     // Checkstyle: resume method name check
 }