Java 8 스트림 적용시 성능 변화Language/Java2022. 11. 24. 14:36
Table of Contents
반응형
for 문
int startIndex = 0;
long endIndex = 2000000000L;
long startTime = System.currentTimeMillis();
long sum = 0;
for (long i = startIndex; i < endIndex; i++) {
sum += i;
}
long processTime = System.currentTimeMillis() - startTime;
System.out.println("sum : " + sum);
System.out.println("process time : " + processTime + "ms");
실행 결과입니다.
sum : 1999999999000000000
process time : 11919ms
Stream 사용
int startIndex = 0;
long endIndex = 2000000000L;
long startTime = System.currentTimeMillis();
long sum = LongStream.range(startIndex, endIndex).sum();
long processTime = System.currentTimeMillis() - startTime;
System.out.println("sum : " + sum);
System.out.println("process time : " + processTime + "ms");
실행 결과입니다.
sum : 1999999999000000000
process time : 33446ms
parallel 사용
int startIndex = 0;
long endIndex = 2000000000L;
long startTime = System.currentTimeMillis();
long sum = LongStream.range(startIndex, endIndex).parallel().sum();
long processTime = System.currentTimeMillis() - startTime;
System.out.println("sum : " + sum);
System.out.println("process time : " + processTime + "ms");
실행 결과입니다.
sum : 1999999999000000000
process time : 9407ms
결과
기존 for 문으로 구현한 방식을 자바의 stream 형태로 변경했을 때 성능은 저하되나 병렬 처리를 사용하면 성능 향상을 할 수 있습니다.
for 문은 병렬 처리를 하려면 여러 스레드에 공유 자원에 대한 접근을 고려하여 구현해야 하기 때문에 쉽지 않은데 자바의 stream을 사용할 경우 병렬 처리로 변경하는 과장이 parallel()
메소드만 호출하면 가능합니다.
반응형
'Language > Java' 카테고리의 다른 글
[Java] 스트림(Stream) 사용 방법 (0) | 2022.11.25 |
---|---|
Java 8 람다(Lambda) 적용 예 (0) | 2022.11.24 |
[JAVA] 날짜 비교 (0) | 2022.09.23 |
[JAVA] String형 Bytes length 구하기 (0) | 2022.09.22 |
[JAVA] 동네예보 조회서비스 API 사용 방법 (0) | 2022.09.12 |
@고지니어스 :: 규니의 개발 블로그
IT 기술과 개발 내용을 포스팅하는 블로그
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!