最快最细致的JMH微基准测试入门

JMH如何使用

JMH的基本用法

基础注解 @Benchmark

在一个基本测试类中至少包含一个被@Benchmark标记的方法,否则会抛出异常。

@BenchmarkMode(Mode.AverageTime)
@OutputTimeUnit(TimeUnit.MICROSECONDS)
@State(Scope.Thread)
public class JMHExample02 {
   

    public void normalMethod() {
   
    }

    public static void main(String[] args) throws RunnerException {
   
        final Options opts = new OptionsBuilder().include(JMHExample02.class.getSimpleName())
                .forks(1)
                .measurementIterations(10)
                .warmupIterations(10)
                .build();
        new Runner(opts).run();
    }
}

异常:Exception in thread "main" No benchmarks to run; check the include/exclude regexps.

Warmup以及Measurement

Warmup: “热身”,使得在度量之前,类经历了早期的优化、JVM运行期编译、JIT优化

Measurement: 真正的度量操作,度量过程中的所有数据都会被纳入统计

全局设置
  1. 构造Options时设置批次执行

    final Options opts = new OptionsBuilder().include(JMHExample02.class.getSimpleName())
                    .forks(1)
       				//度量执行批次为5
                    .measurementIterations(5)
        			//在度量之前先执行两次热身
                    .warmupIterations(2)
                    .build();
            new Runner(opts).run();
    
  2. @Warmup与@Measurement注解

    @BenchmarkMode(Mode.AverageTime)
    @OutputTimeUnit(TimeUnit.MICROSECONDS)
    @State(Scope.Thread)
    
    @Measurement(iterations = 5)
    @Warmup(iterations = 2)
    public class JMHExample02
    
局部设置(基准测试方法之上)
@BenchmarkMode(Mode.AverageTime)
@OutputTimeUnit(TimeUnit.MICROSECONDS)
@State(Scope.Thread)
@Measurement(iterations = 5)
@Warmup(iterations = 3)
public class JMHExample03 {
   

    @Benchmark
    public void test1() throws InterruptedException {
   
        TimeUnit.MILLISECONDS.sleep(10);
    }

    @Benchmark
    @Warmup(iterations = 5)
    @Measurement(iterations = 4)
    public void test2() throws InterruptedException {
   
        TimeUnit.MILLISECONDS.sleep(1);
    }
    public static void main(String[] args) throws RunnerException {
   
        final Options opts = new OptionsBuilder().include(JMHExample03.class.
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值