微型基准测试JMH中具有不同值的循环

时间:2015-03-12 14:23:06

标签: java jmh

众所周知,在JMH基准测试中使用循环并不是一个好主意,因为它将由JIT编译器进行优化,因此应该避免使用。有没有办法使用不同的int输入值(输入列表)来提供我的JMH基准测试方法而不使用循环。

1 个答案:

答案 0 :(得分:11)

看看this example in the JMH documentation。您可以在字段上使用@Param注释,以告诉JMH注入此注释的值:

@Param({"1", "2"})
public int arg;

@Benchmark
public int doBenchmark() {
  return doSomethingWith(arg);
}

然后针对值12运行基准。

请注意,如果带注释的字段不是String而是基元,则会在分配之前解析这些值,并以转换后的形式进行分配。如果您有多个带@Param注释的字段,JMH将使用字段值的任何可能排列运行基准。

您还可以在定义JMH跑步者时覆盖值赋值。