【Java优化实战】微基准系列使用JMH测试和提升应用程序和服务指南

本文介绍了Java Microbenchmark Harness(JMH),用于Java代码的微基准测试,适用于性能调优。JMH提供了@Benchmark、@BenchmarkMode等注解进行测试配置,并通过@State、@Setup和@TearDown等进行测试生命周期管理。文章详细讲解了如何配置JMH的Maven依赖,以及如何生成jar包执行和进行测试结果的可视化。
摘要由CSDN通过智能技术生成

什么是JMH(微基准测试)

JMH,全称Java Microbenchmark Harness (微基准测试框架),是专门用于Java代码微基准测试的一套测试工具API,是由Java虚拟机团队开发的的,一般用于代码的性能调优。

基准测试BenchMark

BenchMark又叫做基准测试,主要用来测试一些方法的性能,可以根据不同的参数以不同的单位进行计算(例如可以使用吞吐量为单位,也可以使用平均时间作为单位,在 BenchmarkMode 里面进行调整)。

微基准测试MicroBenchmark

MicroBenchmark就是在method层面上的benchmark,精度可以精确到微秒级、甚至可以达到纳秒级别,适用于 java 以及其他基于 JVM 的语言。与Apache JMeter 不同,JMH 测试的对象可以是任一方法,颗粒度更小,而不仅限于接口以及API层面。

JMH比较典型的应用场景如下:

  • 想要知道某个函数需要执行多长时间,以及执行时间和输入之间的相关性
  • 想要对比接口不同实现在给定条件下的吞吐量大小
  • 想要知道百分之N的请求在多长时间内完成
  • 想要找出了热点函数,需要对热点函数进行进一步优化时
  • 针对于函数的多种实现方式(例如JSON序列化/反序列化有Jackson和Gson实现),不知道哪种实现性能更好

JMH的开发准备

JMH的使用可以参考官方示例

JMH的Maven依赖

在maven的配置文件中增加如下依赖,最新的依赖版本可以参考:

pom.xml 添加依赖

<!-- JMH的核心包 https://mvnrepository.com/artifact/org.openjdk.jmh/jmh-core -->
<dependency>
    <groupId>org.openjdk.jmh</groupId>
    <artifactId>jmh-core</artifactId>
    <version>1.35</version>
</dependency>

 <!-- JMH依赖注解,需要注解处理包 https://mvnrepository.com/artifact/org.openjdk.jmh/jmh-generator-annprocess -->
<dependency>
    <groupId>org.openjdk.jmh</groupId>
    <artifactId>jmh-generator-annprocess</artifactId>
    <version>1.35</versio
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值