Notice
Recent Posts
Recent Comments
Link
«   2025/12   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
Tags more
Archives
Today
Total
관리 메뉴

나만의 개발 로그 | 고민 로그

23.02.03 TIL 본문

TIL&WIL

23.02.03 TIL

ultramancode 2023. 2. 4. 01:59

☑️ 스트림

항목 한줄 요약
단일 사용 스트림은 한 번 소비하면 재사용 불가 → 다시 collection.stream() 으로 새로 뽑기
병렬 처리(parallelStream) Fork/Join 풀을 이용해 여러 스레드로 데이터 작업
병렬이 항상 빠른 건 아님 요소 개수가 적거나, 요소당 작업이 짧으면 오히려 오버헤드 ↑
 

☑️ parallelStream() 언제 이득일까?

체크 리스트 설명
데이터 량 수만 건 이상일 때 배치 효과가 뚜렷
콜렉션 유형 ArrayList, IntStream.range() 처럼 인덱스 분할이 쉬운 구조
-> HashSet, LinkedList 는 분해·결합 비용 커서 역효과(분할(Fork) → 병렬 실행 → 결합(Join) 하는 구조이기 때문)
 

🔍 System.nanoTime() 으로 직렬 vs 병렬 소요 시간을 재 본 뒤 결정하기.

 
 
long t1 = System.nanoTime(); 
list.stream().map(this::work).toList(); 
long t2 = System.nanoTime(); 
long t3 = System.nanoTime(); 
list.parallelStream().map(this::work).toList(); 
long t4 = System.nanoTime(); 
System.out.printf("직렬: %d ms, 병렬: %d ms%n", (t2 - t1) / 1_000_000, (t4 - t3) / 1_000_000);
 

'TIL&WIL' 카테고리의 다른 글

23.02.08 TIL  (0) 2023.02.09
23.02.06 TIL  (0) 2023.02.07
23.02.01 TIL  (1) 2023.02.02
23.01.31 TIL  (0) 2023.02.01
23.01.30 TIL  (2) 2023.01.31
Comments