JMH无法选择需要进行基准测试的类

3

出现错误,JMH没有选择我的类进行基准测试。

package com.stecurran.jmh.entry;

import org.openjdk.jmh.Main;

public class JmhRunner {

    private static final String TEST = "com.stecurra.benchmark.strategy.EventRunner";

    public static void main(String[] args) {

        Main.main(getArguments(TEST, 5, 5000, 1));
    }

    private static String[] getArguments(String className, int nRuns, int runForMilliseconds, int nThreads) {
        return new String[] { className, "-i", "" + nRuns, "-r", runForMilliseconds + "ms", "-t", "" + nThreads, "-w", "5000ms", "-wi", "3", "-v" };
    }

}

EventRunner包含以下内容:

    package com.stecurra.benchmark.strategy;

import org.openjdk.jmh.annotations.BenchmarkMode;
import org.openjdk.jmh.annotations.GenerateMicroBenchmark;
import org.openjdk.jmh.annotations.Mode;



@BenchmarkMode(Mode.AverageTime)
public class EventRunner {

    @GenerateMicroBenchmark
    public void runTest(){

        TimeStore.start = System.nanoTime();


        // FacebookRetriever fbCal = FacebookRetriever.getInstance();
        GoogleRetriever gCal = GoogleRetriever.getInstance();

        CalendarService cs = new CalendarService(gCal);

        for (SimpleEvent simpleEvent : cs.getEvents()) {
            System.out.println(simpleEvent);
        }

        TimeStore.end = System.nanoTime();

        System.out.println(TimeStore.getTime());        

    }

}

我遇到了以下错误:

排除:org.sample.MyBenchmark.testMethod,不匹配com.stecurra.benchmark.strategy.EventRunner 没有匹配的基准测试。正则表达式拼写错误吗?使用-v输出详细信息。

我该如何更改我的正则表达式使其有效?

谢谢

1个回答

7
请确保已经编译了项目,让JMH注释处理器运行并为您生成基准测试列表。从您的消息中可以看出,EventRunner.test没有被列入基准测试列表。
顺便提一下其他要点:
  1. 劫持JMH Main可能是运行基准测试的简单方法,但我们有更好的Java API可用于这种情况。
  2. 测量时间,特别是在@GenerateMicroBenchmark方法内部打印时间不是您想要的。相反,您需要让JMH为您进行计时测量。请参见例如相关JMH示例
  3. 在消除打印输出后,您需要将得到的值传递给黑洞,这是相关的JMH示例

感谢您提供清晰的解决方案。非常感激,并继续努力开发这个优秀的工具。 - user1089599
2
我认为你想要更新 URL 来指向 http://hg.openjdk.java.net/code-tools/jmh/file/tip/jmh-samples/src/main/java/org/openjdk/jmh/samples,因为存储库的格式已经改变了。 - Richard Warburton

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