JMH Gradle Plugin完全入门:从安装到运行第一个基准测试的简单步骤

JMH Gradle Plugin完全入门:从安装到运行第一个基准测试的简单步骤

【免费下载链接】jmh-gradle-pluginIntegrates the JMH benchmarking framework with Gradle项目地址: https://gitcode.com/gh_mirrors/jm/jmh-gradle-plugin

JMH Gradle Plugin是一款将JMH微基准测试框架与Gradle构建工具无缝集成的插件,它能帮助开发者轻松地在Java项目中实现基准测试。本文将为你提供从安装到运行第一个基准测试的完整指南,让你快速掌握这一强大工具的使用方法。

📋 准备工作:了解JMH Gradle Plugin

JMH(Java Microbenchmark Harness)是OpenJDK提供的微基准测试框架,而JMH Gradle Plugin则是为Gradle项目设计的插件,它简化了JMH在Gradle项目中的配置和使用流程。该插件会自动创建必要的任务和目录结构,让你能够专注于编写基准测试代码。

支持的Gradle版本

使用前请确保你的Gradle版本与插件兼容,以下是最低插件版本要求:

Gradle版本最低插件版本
8.00.7.0
7.00.5.3
5.50.5.0

🚀 快速安装:三步完成插件配置

步骤1:添加插件依赖

在你的Gradle项目中,打开build.gradle文件,添加以下插件配置:

plugins { id "me.champeau.jmh" version "0.7.2" }

注意:0.6.0之前的版本使用me.champeau.gradle.jmh作为插件ID,如果你使用的是旧版本插件,请相应调整。

步骤2:验证项目结构

插件会自动识别src/jmh目录作为基准测试代码的存放位置,标准结构如下:

src/jmh |- java : java sources for benchmarks |- resources : resources for benchmarks

如果你的项目中没有这个目录,可以手动创建,或者运行Gradle任务让插件自动生成。

步骤3:添加JMH依赖(可选)

插件默认使用JMH 1.37版本,如果你需要指定其他版本,可以在dependencies块中添加:

dependencies { jmh 'org.openjdk.jmh:jmh-core:1.37' jmh 'org.openjdk.jmh:jmh-generator-annprocess:1.37' jmh 'org.openjdk.jmh:jmh-generator-bytecode:1.37' }

✍️ 创建第一个基准测试

编写基准测试代码

src/jmh/java目录下创建一个Java类,例如SampleBenchmark.java,添加以下代码:

import org.openjdk.jmh.annotations.Benchmark; public class SampleBenchmark { @Benchmark public void testMethod() { // 这里是你要测试的代码 int sum = 0; for (int i = 0; i < 1000; i++) { sum += i; } } }

项目依赖配置

如果你的基准测试需要依赖第三方库,可以通过jmh配置添加依赖,例如:

dependencies { jmh 'commons-io:commons-io:2.7' }

⚙️ 配置基准测试参数

JMH Gradle Plugin提供了丰富的配置选项,你可以在build.gradle中通过jmh块进行配置:

jmh { includes = ['SampleBenchmark'] // 要执行的基准测试类 exclude = ['UnwantedBenchmark'] // 排除的基准测试类 iterations = 10 // 测量迭代次数 benchmarkMode = ['thrpt', 'ss'] // 基准测试模式:吞吐量和单次执行时间 fork = 2 // fork次数,0表示不fork threads = 4 // 线程数 warmupIterations = 5 // 预热迭代次数 timeOnIteration = '1s' // 每次迭代时间 }

▶️ 运行基准测试

执行基准测试任务

在项目根目录下运行以下命令执行基准测试:

./gradlew jmh

该命令会依次执行以下任务:

  • jmhClasses:编译基准测试代码
  • jmhRunBytecodeGenerator:运行字节码生成器
  • jmhCompileGeneratedClasses:编译生成的基准测试类
  • jmhJar:构建包含基准测试的JAR文件
  • jmh:执行基准测试

查看测试结果

测试结果默认会生成在$buildDir/reports/jmh目录下,包含多种格式的报告文件,如:

  • benchmarks.csv:CSV格式的详细结果
  • results.txt:文本格式的结果
  • human.txt:人类可读的摘要报告

📊 解读基准测试结果

基准测试结果包含丰富的信息,主要关注以下几个指标:

  • Throughput (thrpt):吞吐量,表示每秒执行的操作数
  • AverageTime (avgt):平均时间,每次操作的平均耗时
  • SampleTime (sample):采样时间,随机采样的操作耗时分布
  • SingleShotTime (ss):单次执行时间,适用于冷启动测试

💡 实用技巧与最佳实践

1. 依赖测试代码

如果你的基准测试需要依赖项目的测试代码,可以通过以下配置实现:

jmh { includeTests = true }

2. 处理重复类

当生成JMH JAR时遇到重复类,可以配置重复类策略:

jmh { duplicateClassesStrategy = DuplicatesStrategy.WARN }

3. 与Shadow插件集成

如果你需要创建包含所有依赖的可执行JAR,可以与Shadow插件集成:

jmhJar { append('META-INF/spring.handlers') exclude 'LICENSE' }

📝 总结

通过本文的指南,你已经掌握了JMH Gradle Plugin的安装、配置和使用方法。这个强大的工具能够帮助你精确测量代码性能,找出性能瓶颈,从而优化你的Java应用。无论你是性能优化新手还是有经验的开发者,JMH Gradle Plugin都是你项目中不可或缺的性能测试工具。

现在,你可以开始在自己的项目中使用JMH Gradle Plugin进行基准测试了。记住,良好的性能测试习惯能够帮助你构建更快、更高效的应用!

想要了解更多示例,可以查看项目中的samples/目录,里面包含了多种场景下的基准测试示例。

【免费下载链接】jmh-gradle-pluginIntegrates the JMH benchmarking framework with Gradle项目地址: https://gitcode.com/gh_mirrors/jm/jmh-gradle-plugin

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考