有一个错误,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表示详细输出。
如何将正则表达式更改为有效?
由于
答案 0 :(得分:7)
确保您实际编译了项目,让JMH注释处理器运行并为您生成基准列表。从你在那里的消息中可以看出EventRunner.test
没有进入基准列表。
虽然我们在这,其他花絮:
@GenerateMicroBenchmark
方法内部的时间可能不是你想要的。相反,您需要让JMH为您进行定时测量。参见例如relevant JMH sample。