Согласно этой теме: Collectors.mapping по сравнению с обычным Stream.map
Я решил провести собственные предварительные тестовые случаи, чтобы выяснить приблизительную разницу в производительности между Collectors.mapping
и Stream.map
операций. В связи с вышеизложенным, я создал два вспомогательных метода, которые будут передавать данные с уколом в мой поддельный контейнер.
private List<Employee> dataStab() {
List<Employee> employees = new ArrayList<>();
for (int i = 0; i < 10000000; i++) {
Employee employee = randomizeEmployeeParam();
employees.add(employee);
}
return employees;
}
private Employee randomizeEmployeeParam() {
return
new
Employee(
"Employee" + rand.nextInt(3000),
rand.nextInt(50),
1000 + (10000 - 1000) * rand.nextDouble());
}
Я создал два теста, которые проводят соответственно операции Collectors.mapping
и Stream.map
.
@RepeatedTest(10)
void collectorsMapping() {
Instant start = Instant.now();
List<String> strings = employeeService.collectorsMapping(dataStab());
Instant finish = Instant.now();
long timeElapsed = Duration.between(start, finish).toMillis();
System.out.println(timeElapsed);
assertEquals(10000000, strings.size());
}
@RepeatedTest(10)
void streamMapAndCollect() {
Instant start = Instant.now();
List<String> mapAndCollect = employeeService.streamMapAndCollect(dataStab());
Instant finish = Instant.now();
long timeElapsed = Duration.between(start, finish).toMillis();
System.out.println(timeElapsed);
assertEquals(10000000, mapAndCollect.size());
}
Тесты работают до сих пор, но теперь я предполагаю вручную рассчитать среднее время этих тестов на основе результатов в окне выполнения в IntelliJ. Более того, в долгосрочной перспективе, если я увеличу @RepeatedTest
параметр для вычисления ближайшего результата, это будет немного утомительно. Я хочу знать, возможно ли обработать параметр длительности timeElapsed
и вычислить среднее значение для n повторных тестов.