[JAVA] For loop보다 Stream 성능이 더 안좋은 경우

khlee33·2021년 10월 31일
0

JAVA 8부터 추가된 Stream 기능은 개발자 입장에서 코드를 간결할 수 있는 이점이 있다.

하지만 Stream 기능이 기존의 For Loop 문보다 성능이 더 안좋은 경우에 대해서 정리하겠다.

기본적으로 For-Loop문이 Stream 보다 성능이 뛰어나다.

단순 for-loop의 경우 오버헤드가 없는 단순한 인덱스 기반 메모리 접근이기 때문에 Stream을 사용했을 때보다 더 빠르다.
또한 컴파일러 관점에서 보면 오랫동안 유지한 For-Loop 문이 비교적 최근에 도입된 Stream보다 최적화가 잘 되어있다.


Stream과 For-Loop의 차이가 적은 경우는 내부 계산 비용이 클 경우이다.

성능 차이 : primitive type > wrapped type > 내부 계산값이 큰 함수

정리하자면 Loop를 실행하는 순회 비용보다 계산 비용이 더 큰 경우에 Stream과 For-Loop 성능이 비슷해지며, 차이가 줄어드는 것을 알 수 있다.

0개의 댓글