У меня есть некоторые проблемы с использованием JMH.
Итак, я создаю пустой проект в Intellij Idea, затем в структуру проекта добавляю jmh-core JAR-файл. Наконец, попробуйте запустить образцы, например
import org.openjdk.jmh.annotations.GenerateMicroBenchmark;
import org.openjdk.jmh.runner.Runner;
import org.openjdk.jmh.runner.RunnerException;
import org.openjdk.jmh.runner.options.Options;
import org.openjdk.jmh.runner.options.OptionsBuilder;
public class JMHSample_01_HelloWorld {
@GenerateMicroBenchmark
public void wellHelloThere() {
// this method was intentionally left blank.
}
public static void main(String[] args) throws RunnerException {
Options opt = new OptionsBuilder()
.include(".*" + JMHSample_01_HelloWorld.class.getSimpleName() + ".*")
.forks(1)
.build();
new Runner(opt).run();
}
}
но результат
No matching benchmarks. Miss-spelled regexp?
Use EXTRA verbose mode to debug the pattern matching.
Process finished with exit code 0
с использованием verbosity(VerboseMode.EXTRA)
No matching benchmarks. Miss-spelled regexp?
Benchmarks:
Process finished with exit code 0
Я попытался изменить выходной путь на projectFolder\target\classes
, но ничего не изменилось. Затем я посмотрел исходный код в режиме отладки и увидел, что resource = "/META-INF/MicroBenchmarks"
,urls.hasMoreElements()
ложно и, следовательно, benchmarks
пусто. Затем я увидел в образцах jar-файл, в котором есть файл MicroBenchmarks с информацией о тестах и хорошо работает.
Так вот вопрос, что я делаю не так? Должен ли я писать информацию о тесте вручную?