目前正在尝试将 JMH 1.33 与 JDK 17 一起使用。但是,以编程方式调用 JMH 似乎使用 sun.mis.Unsafe。由于 1.33 是 JMH 的最新版本,因此似乎不可能将 JMH 与 JDK 17 一起使用?我希望情况并非如此,因为我正在尝试对一些较新的 API 进行基准测试,因此使用旧版本的 JDK 对我来说不是一个选择。
我正在使用以下包装代码:
public static void main(String[] args) throws RunnerException {
Options opt = new OptionsBuilder()
.include(QuadPointBenchmark.class.getName())
.warmupTime(TimeValue.seconds(10))
.detectJvmArgs()
.mode(Mode.AverageTime)
.timeUnit(TimeUnit.NANOSECONDS)
.build();
new Runner(opt).run();
}
以下是我的 pom 文件的相关部分:
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<jmh.version>1.33</jmh.version>
<javac.target>17</javac.target>
<uberjar.name>benchmarks</uberjar.name>
</properties>
<dependencies>
<dependency>
<groupId>org.openjdk.jmh</groupId>
<artifactId>jmh-core</artifactId>
<version>${jmh.version}</version>
</dependency>
<dependency>
<groupId>org.openjdk.jmh</groupId>
<artifactId>jmh-generator-annprocess</artifactId>
<version>${jmh.version}</version>
<scope>provided</scope>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.commons/commons-lang3 -->
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.9</version>
</dependency>
</dependencies>