Я создаю карту карты из списка, используя Stream API.Список содержит 10 миллионов записей.Я сделал это с помощью одного оператора, используя две операции 'groupingBy', как показано ниже.Проблема в том, что выполнение этого однострочного оператора занимает почти 1,5 минуты, что стало узким местом в моем критически важном для производительности приложении.
Я дал код, который я попробовал ниже, используя API параллельного потока
Map<MyKey, Map<String, List<Person>>> personMap = personList.parallelStream()
.collect(Collectors.groupingBy(
person -> new MyKey(person.Id(), person.getPricePointId()),
Collectors.groupingBy(Person::getWorkType)));
Для выполнения вышеуказанного кода требуется более 1,5 минуты, что составляет почти 75% моего общего времени выполнения.Я не нахожу другого решения быстрее, чем это.Итак, мой вопрос здесь такой: максимально ли это пропускная способность для такого большого объема данных?или использование downstream (множественная groupingBy) не является правильным вариантом здесь?, если нет, то каким должен быть правильный способ сократить время выполнения?