Полезный Java-совет:
Не вызывай parallelStream() просто потому, что данных много.
Для коротких операций он легко оказывается медленнее обычного stream(), потому что платишь за разбиение задачи, синхронизацию и работу ForkJoinPool.
Особенно неприятно то, что по умолчанию parallelStream() использует общий ForkJoinPool.commonPool(). Если приложение уже нагружает его другими задачами, производительность может внезапно просесть вообще в другом месте.
Если параллелизм реально нужен, лучше контролировать executor явно, а не прятать его внутри parallelStream().
Не вызывай parallelStream() просто потому, что данных много.
Для коротких операций он легко оказывается медленнее обычного stream(), потому что платишь за разбиение задачи, синхронизацию и работу ForkJoinPool.
Особенно неприятно то, что по умолчанию parallelStream() использует общий ForkJoinPool.commonPool(). Если приложение уже нагружает его другими задачами, производительность может внезапно просесть вообще в другом месте.
Если параллелизм реально нужен, лучше контролировать executor явно, а не прятать его внутри parallelStream().