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
不然執行報錯
執行程式碼
點選即可執行,首先會預熱,後真正執行計算。