众所周知,在 JMH 基准测试中使用循环不是一个好主意,因为它会被 JIT 编译器优化,因此应该避免。int
有没有一种方法可以在不使用循环的情况下为我的 JMH 基准测试方法提供不同的输入值(输入列表)。
问问题
7495 次
1 回答
16
查看JMH 文档中的这个示例。您可以@Param
在字段上使用注释以告诉 JMH 注入此注释的值:
@Param({"1", "2"})
public int arg;
@Benchmark
public int doBenchmark() {
return doSomethingWith(arg);
}
然后针对值1
和运行基准测试2
。
请注意,如果带注释的字段不是String
原语而是原语,则在分配之前解析值并以其转换后的形式分配。如果您有多个带有@Param
注释的字段,JMH 将使用任何可能的字段值排列来运行基准测试。
您还可以在定义 JMH 运行器时覆盖值分配。
于 2015-03-13T08:02:27.937 回答