[java] 스트림의 성능과 메모리 사용량 비교

Java 8부터 도입된 스트림은 데이터를 처리하는 데 유용한 기능입니다. 하지만 스트림을 사용할 때 성능과 메모리 사용량에 영향을 줄 수 있습니다. 이번 블로그에서는 스트림의 성능과 메모리 사용량을 비교하는 방법에 대해 알아보겠습니다.

성능 비교 방법

스트림의 성능을 비교하기 위해서는 일반적으로 두 가지 방법을 사용합니다.

  1. 시간 측정: 같은 작업을 스트림을 사용하여 처리하고 걸리는 시간을 측정합니다.
  2. 메모리 사용량 측정: 스트림을 사용한 작업을 수행할 때의 메모리 사용량을 측정합니다.

이 두 가지 방법을 사용하여 스트림의 성능을 비교할 수 있습니다.

성능 비교 예시

다음은 스트림을 사용하여 1부터 100까지의 숫자의 합을 계산하는 코드입니다.

import java.util.stream.IntStream;

public class StreamPerformanceExample {
    public static void main(String[] args) {
        // 스트림 사용
        long start = System.currentTimeMillis();
        int sum = IntStream.rangeClosed(1, 100)
                            .sum();
        long end = System.currentTimeMillis();
        System.out.println("스트림 사용 시간: " + (end - start) + "ms");

        // 일반 반복문 사용
        start = System.currentTimeMillis();
        int sum2 = 0;
        for (int i = 1; i <= 100; i++) {
            sum2 += i;
        }
        end = System.currentTimeMillis();
        System.out.println("일반 반복문 사용 시간: " + (end - start) + "ms");
    }
}

위 코드에서는 스트림을 사용하여 1부터 100까지의 숫자의 합을 계산하고, 그때의 시간을 측정합니다. 이후 일반적인 반복문을 사용하여 같은 작업을 처리하고, 시간을 비교하여 성능을 평가합니다.

메모리 사용량 비교

스트림을 사용할 때는 메모리 사용량이 늘어날 수 있습니다. 특히 규모가 큰 데이터를 처리할 때에는 더욱 그러한 경향이 있습니다. 따라서 스트림을 사용할 때 메모리 사용량을 측정하고 비교하는 것이 좋습니다.

정리

스트림은 데이터 처리를 편리하게 해주는 기능이지만, 성능과 메모리 사용량을 올바르게 측정하여 비교하는 것이 중요합니다. 이러한 비교를 통해 최적의 데이터 처리 방법을 선택할 수 있고, 프로그램의 성능을 향상시킬 수 있습니다.

Reference: https://docs.oracle.com/javase/tutorial/collections/streams/parallelism.html