JMH java Mocrobenchmark Harness 方法级精准测量工具 概述

Posted sunxing007

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JMH java Mocrobenchmark Harness 方法级精准测量工具 概述相关的知识,希望对你有一定的参考价值。

JMH,即Java Microbenchmark Harness,是专门用于代码微基准测试的工具套件。何谓Micro Benchmark呢?简单的来说就是基于方法层面的基准测试,精度可以达到微秒级。当你定位到热点方法,希望进一步优化方法性能的时候,就可以使用JMH对优化的结果进行量化的分析。测量精准度可达0.001微妙;

JMH比较典型的应用场景有:

  • 想准确的知道某个方法需要执行多长时间,以及执行时间和输入之间的相关性;
  • 对比接口不同实现在给定条件下的吞吐量;
  • 查看多少百分比的请求在多长时间内完成;
package com.smart.test;

import java.util.concurrent.TimeUnit;

import org.openjdk.jmh.annotations.Benchmark;
import org.openjdk.jmh.annotations.BenchmarkMode;
import org.openjdk.jmh.annotations.Mode;
import org.openjdk.jmh.annotations.OutputTimeUnit;
import org.openjdk.jmh.annotations.Scope;
import org.openjdk.jmh.annotations.State;
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;

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

    @Benchmark
    public int sleepAWhile() {
        try {
            Thread.sleep(400);
        } catch (InterruptedException e) {

        }
        return 0;
    }

    public static void main(String[] args) throws RunnerException {
        Options opt = new OptionsBuilder()
                .include(FirstBenchmark.class.getSimpleName())
                .forks(1)
                .warmupIterations(5)
                .measurementIterations(5)
                .build();

        new Runner(opt).run();
    }
}

 

以上是关于JMH java Mocrobenchmark Harness 方法级精准测量工具 概述的主要内容,如果未能解决你的问题,请参考以下文章

涉及大量 Mysql 查询的 Java 代码的 JMH 基准测试

Java JMH 基准测试工具概述

Java基准测试工具JMH使用

Java基准测试工具JMH使用

用于对 Java 类进行基准测试的 JMH 与 JMeter?

如何在linux上做Java基准测试工具JMH测试