当我们在谈论某个 Java 语法特性的性能,或者一段业务代码的性能时,往往是凭经验或者写一个简单的循环来测试其是效果。实际上 JVM 的开发者们,已经有一个非常好的工具来做方法层面的基准测试(相对于 ab 测试和 jmeter)。
JMH 是一个用于构建、运行和分析 Java 方法运行性能工具,可以做到 nano/micro/mili/macro 时间粒度。JMH 不仅可以分析 Java 语言,基于 JVM 的语言都可以使用。
OpenJdk 官方运行 JMH 测试推的方法是使用 Maven 构建一个单独的项目,然后把需要测试的项目作为 Jar 包引入。这样能排除项目代码的干扰,得到比较可靠地测试效果。当然也可以使用 IDE 或者 Gradle 配置到自己项目中,便于和已有项目集成,代价是配置比较麻烦并且结果没那么可靠。
使用 Maven 构建基准测试
根据官网的例子,我们可以使用官网的一个模板项目。
mvn archetype:generate
-DinteractiveMode=false
-DarchetypeGroupId=org.openjdk.jmh
-DarchetypeArtifactId=jmh-java-benchmark-archetype
-DgroupId=org.sample
-DartifactId=test
-Dversion=1.0
创建一个项目&