JMH介绍

2020-08-21 • 预计阅读时间 1 分钟

JMH

Java Microbenchmarks Hard 是一个Java的性能测试框架。针对的主要是代码片段或者简单的函数。虽然总是用jmeter 来做性能测试,但是想知道某个函数具体的性能信息的话,还是不太方便。JMH就是为了这种场景诞生的。

这是OpenJDK的一个子项目,里面还是有挺多好用的东西。

使用

可以参考如下的两篇文章

使用的时候可以搭配gradle的插件进行

buildscript {
    repositories {
        jcenter()
        maven {
            url "https://plugins.gradle.org/m2/"
        }
    }
    dependencies {
        classpath "me.champeau.gradle:jmh-gradle-plugin:0.5.0"
    }
}

plugins {
    id 'org.springframework.boot' version '2.3.3.RELEASE'
    id 'io.spring.dependency-management' version '1.0.10.RELEASE'
    id 'java'
}

apply plugin: "me.champeau.gradle.jmh"

测试类的要求

  • 必须是public
  • 如果是内嵌的类,必须是static的
  • 必须有无参的构造函数

JMH 模式

模式说明
Throughput统计每秒执行的次数
Average Time统计平均执行时间
Sample Time统计函数执行的时间,包含,最小,最大
Single Shot Time单次执行时间,在测冷启动的时候用得到
All统计以上所有

默认的模式为Throughput.可以通过函数的注解来配置模式 @Benchmark @BenchmarkMode(Mode.Throughput)

时间单位

JMH可以通过指定不同的时间单位,来控制结果输出中的时间单位。@OutputTimeUnit(TimeUnit.MINUTES)

  • NANOSECONDS
  • MICROSECONDS
  • MILLISECONDS
  • SECONDS
  • MINUTES
  • HOURS
  • DAYS
devjava

wentao

写点代码,解决点问题。

北京八大处

找到Bean在那里创建的