<aside>
1️⃣ 오버헤드란 무엇인가?
</aside>
- 오버헤드는 컴퓨터 시스템에서 추가적으로 발생하는 처리 시간, 메모리 사용, 자원 소비 등을 가리키는 용어다. 프로그램에서 오버헤드는 주로 다음과 같은 상황에서 발생할 수 있다.
- 추가적인 작업 수행:
- Stream API는 내부적으로 다양한 작업을 수행한다.
예를 들어, 중간 연산과 최종 연산을 위해 추가적인 객체를 생성하거나 가공 작업을 수행한다.
이로 인해 반복문보다 더 많은 작업을 처리해야 하므로 오버헤드가 발생할 수 있다.
- 메모리 사용:
- Stream API는 데이터 처리를 위해 중간 상태를 유지하기 위한 임시 메모리를 사용한다.
이 임시 메모리는 추가적인 공간을 차지하며, 데이터셋이 크거나 처리해야 할 요소의 개수가 많을수록 메모리 사용이 증가하여 오버헤드가 발생할 수 있다.
- 동기화 비용:
- Stream API의 병렬 처리는 멀티코어 환경에서 작업을 분산 처리하기 위해 스레드 풀을 사용한다.
이 때 스레드 간의 동기화 비용이 발생할 수 있으며, 특히 데이터의 순서에 따른 의존성이 있는 경우 동기화 오버헤드가 커질 수 있다.
- 이러한 오버헤드는 개별적으로는 미세하게 작용할 수 있으나, 반복문과 비교했을 때 상대적으로 추가적인 작업과 자원 사용을 필요로 한다. 따라서 매우 큰 데이터셋이나 성능에 민감한 작업의 경우, 일반적인 반복문을 사용하는 것이 더 효율적일 수 있다.
- 그러나 대부분의 경우에는 Stream API의 오버헤드는 사용자에게는 미미하게 느껴진다. Stream API의 간결한 문법과 다양한 기능을 활용하여 코드를 작성하면 개발자의 생산성을 향상시킬 수 있다. 따라서 대부분의 상황에서는 Stream API를 사용하는 것이 권장된다.