3

目前正在尝试将 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>
4

0 回答 0