JMH: не принимайте во внимание время внутреннего метода
У меня есть следующие методы:
@GenerateMicroBenchmark
public static void calculateArraySummary(String[] args) {
// create a random data set
/* PROBLEM HERE:
* now I measure not only pool.invoke(finder) time,
* but also generateRandomArray method time
*/
final int[] array = generateRandomArray(1000000);
// submit the task to the pool
final ForkJoinPool pool = new ForkJoinPool(4);
final ArraySummator finder = new ArraySummator(array);
System.out.println(pool.invoke(finder));
}
private static int[] generateRandomArray(int length) {
final int[] array = new int[1000000];
final Random random = new Random();
for (int i = 0; i < array.length; i++) {
array[i] = random.nextInt(100);
}
return array;
}
Проблема: я не хочу, чтобы моя программа учитывала время, потраченное generateRandomArray
метод.
Квестуин: Как я могу исключить generateRandomArray
из измерений JMH?
1 ответ
Решение
Если вы сомневаетесь, посмотрите образцы JMH. Эффект, который вы хотите достичь @Setup
аннотации к некоторому методу крепления, который будет запущен перед тестом. Точный ответ в JMH Samples находится здесь.