woowacourse-study / 2022-modern-java-in-action

우아한테크코스 4기 모던 자바 인 액션 스터디
10 stars 4 forks source link

스트림은 만능일까? #34

Open bcc0830 opened 2 years ago

bcc0830 commented 2 years ago

문제

스트림의 단점에 대해 알아보자

선정 배경

전반적으로 스트림의 장점에 대해서만 언급을 하는데 그렇게 스트림이 좋다면 굳이 for문이 있을 이유는 없지 않을까? 그럼에도 for문, forEach문이 있다는 건 스트림의 단점이 있다는 것을 반증하기 때문이다

관련 챕터

bcc0830 commented 2 years ago

Stream은 성능 상의 단점이 있을 수 있다



그렇다면 병렬 스트림과 단일 스트림은?



결론

스트림은 "항상" for문 보다 빠르지 않다! for문보다 스트림을 써야 하는 경우는 소스 컬렉션이 충분히 큰 경우거나 컴퓨팅 연산이 굉장히 큰 경우이다. 또한 병렬 스트림을 써야 하는 경우는 소스 컬렉션이 split하기 쉬운 구조여야 한다 그럼에도 불구하고 성능이 극단적으로 중요한 도메인(예를 들어 가상화폐 매매 거래)이 아니라면, 협업자들의 가독성을 위해 for문 보다는 느릴수도 있는 스트림을 쓰는 것이 더 효율적일 수 있다