Ответ
Нет, для такой простой и лёгкой операции над малым диапазоном данных parallelStream() будет значительно медленнее из-за накладных расходов на:
- Разделение (fork) данных на части.
- Распределение задач по потокам в
ForkJoinPool. - Синхронизацию и объединение (join) результатов.
Пример и бенчмарк:
// Последовательный стрим (эффективно)
long sequentialSum = LongStream.rangeClosed(1, 100).sum();
// Параллельный стрим (неэффективно из-за накладных расходов)
long parallelSum = LongStream.rangeClosed(1, 100).parallel().sum();
Когда parallelStream() полезен:
- Большой объём данных (десятки/сотни тысяч элементов).
- "Тяжёлые" операции над каждым элементом (сложные вычисления, блокирующие I/O).
- Источник данных легко делится (например,
ArrayList,IntStream.range).
Правило: Всегда измеряйте производительность с помощью бенчмарков (JMH) перед использованием параллельных стримов. Для тривиальных операций (sum(), filter() на малых данных) последовательный стрим почти всегда быстрее.