JMH基本概念和配置

JMH基本概念和配置

1、模式(Mode)

Mode表示JMH的测量方式和角度,共有四种。

  • Throughput:整体吞吐量,表示1秒内可以执行多少次调用。
  • AverageTime:调用的平均时间,表示每一次调用所需要的时间。
  • SampleTime:随机取样,最后输出随机取样结果的分布。
  • SingleShotTime:以上模式都是默认一次Iteration是一秒,唯有SingleShotTime只运行一次。往往同时把warmup设置为0,用于测试程序的冷启动性能。

2、迭代(Iteration)

迭代是JMH的一次测量单位。在大部分测试模式下,一次迭代表示1秒,在这1秒内会不间断的调用被测方法,并采样计算吞吐量、平均时间等。

3、预热(Warmup)

由于Java虚拟机JIt的存在,同一个方法在JIT编译前后的时间将会不同。通常只考虑方法在JIt编译之后的性能。

4、状态(State)

通过State可以指定一个对象的作用范围。范围主要有两种,一种为线程范围,也就是一个对象只会被一个线程访问。在多线程进行测试时,会为每一个线程生成一个对象。另一种是基准测试范围(BenchMark),即多个线程共享一个实例。

5、配置类

Options opt = new OptionsBuilder().include(TestMap_JMH.class.getSimpleName())
                .forks(2).build();
        try {
            new Runner(opt).run();
        } catch (RunnerException e) {
            e.printStackTrace();
        }
首先对测试进行配置,需要指定一些参数,比如指定测试类(include)、使用的进程个数(forks)、预热迭代次数(warmupForks),在配置启动测试时,
需要使用配置类。

posted @ 2020-03-28 11:29  Beans_bag  阅读(614)  评论(0编辑  收藏  举报