JMH: пространство параметров ограничения

Предположим, что у меня есть тест JMH с двумя параметрами:

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

Существует ли идиоматический способ добавления ограничения на параметры, например. только для контрольных значений для param1 < param2?

Выбрасывание исключения из @SetUp работает, но добавляет шум к выходу.

1 ответ

Нет, не сейчас. Если вы чувствуете, что аннотации сжимаются, вы всегда можете вернуться к 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
 }
}

(Перспектива обслуживающего персонала: похоже, не стоит запускать полноценную DSL для JMH, основанной на аннотациях, просто проще позволить пользователям кодировать свои расширенные сценарии на Java).

UPD: Подумайте об этом, вы, вероятно, можете кодировать оба параметра в один @Param, если хотите остаться с аннотацией.

licensed under cc by-sa 3.0 with attribution.