0.6. 我有 jmh-core、jmh-generator-annprocess、jmh-generator-reflection 作为依赖项。
首先,不幸的是,文档很差。一方面,我使用 gradle,而不是 maven,所以使用 maven 原型不是一个选项。
其次,我想使用 Java API,而不是命令行。
我非常简单的代码是:
public final class TestBenchmark
{
private static final int COUNT = 100_000;
private static final List<Integer> LIST = new ArrayList<>();
static {
for (int i = 0; i < COUNT; i++)
LIST.add(i);
}
@GenerateMicroBenchmark
public void foreachLoop()
{
int dummy;
for (final int i: LIST)
dummy = i;
}
@GenerateMicroBenchmark
public void forLoop()
{
int dummy;
final int size = LIST.size();
for (int i = 0; i < size; i++)
dummy = LIST.get(i);
}
public static void main(final String... args)
throws RunnerException
{
final Options options = new OptionsBuilder()
.forks(1)
.warmupIterations(1)
.measurementIterations(20)
.verbosity(VerboseMode.EXTRA)
.build();
new Runner(options).run();
}
}
因为我没有.include()
,所以它意味着.*
作为正则表达式,因此所有基准。这是我项目中唯一的课程。
但没有:“没有找到基准”。
因此,作为最后的手段,我尝试META-INF/MicroBenchmarks
按照其他地方的建议创建文件;内容,类名:
com.github.parboiled1.grappa.TestBenchmark
但它也不起作用:
Exception in thread "main" java.lang.IllegalStateException: Mismatched format for the line: com.github.parboiled1.grappa.TestBenchmark
当然,这个文件的格式没有记录。
但我不想用这个文件开始;我想指定要运行的类列表。
我怎么做?