JMH- benchmark基准测试
介绍
Java 提供了一个强大的工具包:Java Microbenchmark Harness (JMH)。JMH 是专门用于Java基准测试的工具,适合微基准,因为它可以应对JVM的各种优化。
pom中引入
<dependency>
<groupId>org.openjdk.jmh</groupId>
<artifactId>jmh-core</artifactId>
<version>1.36</version>
</dependency>
<dependency>
<groupId>org.openjdk.jmh</groupId>
<artifactId>jmh-generator-annprocess</artifactId>
<version>1.36</version>
<scope>provided</scope>
</dependency>
<!-- 打包插件 -->
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
<configuration>
<annotationProcessorPaths>
<path>
<groupId>org.openjdk.jmh</groupId>
<artifactId>jmh-generator-annprocess</artifactId>
<version>1.36</version>
</path>
</annotationProcessorPaths>
</configuration>
</plugin>
</plugins>
</build>
安装插件
jmt 插件安装到idea中
编写代码
import org.openjdk.jmh.annotations.*;
import java.util.concurrent.TimeUnit;
@BenchmarkMode(Mode.AverageTime)
@OutputTimeUnit(TimeUnit.MILLISECONDS)
@State(Scope.Thread)
public class MyBenchmark {
@Benchmark
public void testMethod() {
int sum = 0;
for (int i = 0; i < 1_000_000; i++) {
sum += i;
}
}
}
先编译后执行
首先需要执行 maven clean install
编译生成/META-INF/benchmarklist
不然执行报错
执行代码
点击即可执行,首先会预热,后真正执行计算。