package jmh; import org.openjdk.jmh.annotations.*; import org.openjdk.jmh.runner.Runner; import org.openjdk.jmh.runner.RunnerException; import org.openjdk.jmh.runner.options.Options; import org.openjdk.jmh.runner.options.OptionsBuilder; import java.util.concurrent.TimeUnit; @BenchmarkMode(Mode.AverageTime) @Fork(1) @Warmup(iterations = 5) @Measurement(iterations = 10) @OutputTimeUnit(TimeUnit.MICROSECONDS) public class JMHExample05 { public static void main(String[] args) throws RunnerException { Options options = new OptionsBuilder() .include(JMHExample05.class.getSimpleName()) .build(); new Runner(options).run(); } // 在线程组test,在线称中有三个线程不断对Test实例write方法进行调用 @GroupThreads(3) @Group("test") @Benchmark public void testWrite(MyState state) { state.write(); } // 在线程组test,在线程中有三个线程对testRead方法进行调用 @GroupThreads(3) @Group("test") @Benchmark public void testRead(MyState state) { state.read(); } @State(Scope.Benchmark) public static class MyState { public MyState() { System.out.println("create instance"); } public void write() { System.out.println("write"); } public void read() { System.out.println("read"); } } }