Методы JMH-Benchmark со строковыми параметрами

Как мне сравнить методы в JMH со строковыми параметрами, исходящими из другого класса?

@Benchmark 
@BenchmarkMode(Mode.All)
@Warmup(iterations = 5, time = 1)
@Measurement(iterations = 2, time = 1)
public refType getOrAdd(String refTypeName)
{
   return nameClass.containsValue(refTypeName)
}

Когда я компилирую, я получаю следующую ошибку: параметры метода должны быть классами @State


jmh
person Pavan    schedule 21.08.2019    source источник


Ответы (1)


Подумайте об этом: откуда JMH должен знать, с какими значениями вызывать метод @Benchmark? Что бы ни вызывало этот метод getOrAdd, оно должно передавать ему данные, а вызывающим должен быть @Benchmark. Или это должно быть что-то, о чем JMH знает и инициализирует сам, например, класс @State, несущий параметры, как предполагает ошибка компиляции.

Трудно понять, чего вы хотите достичь, не видя остальной код. Пожалуйста, посмотрите, как создавать MCVE.

person Aleksey Shipilev    schedule 22.08.2019