JMH:约束参数空间

时间:2015-02-11 12:32:04

标签: jmh

假设我有一个带有两个参数的JMH测试:

@Param( { "1", "2", 4", "8", "16" } )
int param1;

@Param( { "1", "2", 4", "8", "16" } )
int param2;

是否有一种惯用的方法来为参数添加约束,例如仅限param1 < param2的基准?

从@SetUp中抛出异常有效,但会在输出中添加噪音。

1 个答案:

答案 0 :(得分:4)

不,不是在这一点上。如果您觉得注释受到限制,您可以随时回退到API。在那里,你可以做类似的事情:

for (int p1 = 1; p1 <= 16; p1 *= 2) {
   for (int p2 = 1; p2 <= p1; p2 *= 2) {
      Options opt = new OptionsBuilder()
        ...
        .param("param1", p1)
        .param("param1", p2)
        .build();

       RunResult r = new Runner(opt).runSingle();
       ... put r somewhere to process
   }
}

(维护者的观点:为JMH完成一个成熟的基于注释的DSL似乎不值得,让用户用Java编写高级场景更简单)。

UPD:考虑一下,如果你想继续使用注释方式,你可以将两个参数编码成一个@Param

相关问题