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 基准测试