Stream에서 중간연산으로 limit()을 사용하면 파이프라인의 성능을 기대할 수 없는 이유는?

MinJee Lee·2022년 5월 13일
0

Java

목록 보기
8/10
post-thumbnail

limit() 대신 rangeClosed()를 사용하는 것이 좋다.

limit()은 소수 찾기 처럼 나중에 갈 수록 오래 걸리는 케이스에 더 주의해야한다.

파이브라인 병렬화는 limit()을 다룰 때, CPU 코어가 남는다면, 원소를 몇 개 더 처리한 후 제한된 개수 이후의 결과를 버려도 아무런 해가 없다고 가정해보자

ex) 10개의 소수 찾기를 쿼드코어 환경에서 돌린다고 가정하면, 10번째 소수를 찾는 마지막 연산에서 남는 CPU코어가 11,12,13 번째 소수를 찾는 연산을 시작한 후, 결과를 버린다.

(비효율 적이고 심각하게 오래걸림)

이펙티브 자바 3판 스트림 병렬화는 주의해서 적용하라 에서 참고했습니다.

0개의 댓글