Java微基准测试工具报错:无法找到资源:/META-INF/BenchmarkList。

5

我想使用JMH来衡量Fibonacci函数的性能。

但是在编译时,我遇到了以下错误:

Exception in thread "main" java.lang.RuntimeException: ERROR: Unable to find the resource: /META-INF/BenchmarkList
    at jmh.core@1.34/org.openjdk.jmh.runner.AbstractResourceReader.getReaders(AbstractResourceReader.java:98)
    at jmh.core@1.34/org.openjdk.jmh.runner.BenchmarkList.find(BenchmarkList.java:124)
    at jmh.core@1.34/org.openjdk.jmh.runner.Runner.internalRun(Runner.java:253)
    at jmh.core@1.34/org.openjdk.jmh.runner.Runner.run(Runner.java:209)
    at jmh.core@1.34/org.openjdk.jmh.Main.main(Main.java:71)
    at project/Mypackage.BenchmarkRunner.main(BenchmarkRunner.java:6)

我使用IntelliJ IDEA

我使用openJDK 16

我尝试在Resources目录中添加文件夹和文件/META-INF/BenchmarkList

但是出现了以下错误:

No matching benchmarks. Miss-spelled regexp?
Use EXTRA verbose mode to debug the pattern matching.

我的主类启动了基准测试:

public class BenchmarkRunner {
    public static void main(String[] args) throws Exception {
        org.openjdk.jmh.Main.main(args);
    }

}

我想要测量性能的是具有Fibonacci方法的类

public class TestClassMesurment {

    @Benchmark
    @BenchmarkMode(Mode.AverageTime)
    @Fork(value = 1)
    @Warmup(iterations = 2)
    @Measurement(iterations = 1)
    public void init() {

        fib(52);
        //fibbonaci(300);
    }

    static int fib(int n) {
        if (n<2) return 1;
        else return fib(n-1) + fib(n-2);
    }

    
    double fibbonaci(int n){
        double prev=0d, next=1d, result=0d;
        for (int i = 0; i < n; i++) {
            result=prev+next;
            prev=next;
            next=result;
        }
        return result;
    }
}
1个回答

3

/META-INF/BenchmarkList 是在编译时自动生成的,您无需手动创建它。如果没有创建此文件,则通常意味着注释处理已关闭。请打开它。

此外,您运行基准测试的方式与示例中指定的方式不同。请尝试使用该方法。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接