Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- 백준
- 스프링 핵심 원리
- 자바 ORM 표준 JPA 프로그래밍 7장
- Kotlin
- 고급매핑
- Kotlin in action 5장
- 20055 컨베이어 벨트 위의 로봇
- 객체 지향 설계와 스프링
- 백준 13460 Python
- 코틀린인액션
- Kotlin in action 6장
- kotlin in action 정리
- 스프링 컨테이너와 스프링 빈
- Kotlin In Action
- 싱글톤 컨테이너
- Kotlin in action 3장
- 13460 구슬탈출 2
- 코틸린인액션
- 컨베이어 벨트 위의 로봇 Python
- 7장 고급매핑
- 기능개발 python
- 백준 20055 컨베이어 벨트 위의 로봇
- Python
- Kotlin in action 10장
- 코틀린
- 20055
- spring
- 스프링 핵심 원리 이해
- KotlinInAction
- 스프링 핵심 원리 - 기본편
Archives
- Today
- Total
기록하는 습관
[Test] Redis 저장 (for vs. stream) 본문
redis에 데이터를 저장하기 위해 SortedSet에 데이터를 넣어야 한다.
이 때, 반복문을 사용할 때 list를 사용하는 것과 stream 중에 어떤 것이 더 빠를지 비교해보고자 한다.
@Test
@DisplayName("redis 관련 속도 측정 - for문")
void redisFor() {
List<Boards> boardList = getS3Records("", (long) 1);
RBatch rBatch = redisson.createBatch();
for (Boards board : boardList) {
rBatch.getScoredSortedSet("board1").addAsync(Double.parseDouble(board.getTitle()), board.getContent());
}
}
@Test
@DisplayName("redis 관련 속도 측정 - stream")
void redisStream() {
List<Boards> boardList = getS3Records("", (long) 1);
RBatch rBatch = redisson.createBatch();
boardList.stream().forEach(stream -> rBatch.getScoredSortedSet("board1").addAsync(Double.parseDouble(stream.getTitle()), stream.getContent()));
}
@Test
@DisplayName("redis 관련 속도 측정 - parallelStream")
void redisParallelStream() {
List<Boards> boardList = getS3Records("", (long) 1);
RBatch rBatch = redisson.createBatch();
boardList.parallelStream().forEach(stream -> rBatch.getScoredSortedSet("board1").addAsync(Double.parseDouble(stream.getTitle()), stream.getContent()));
}
테스트 결과는 다음과 같다.
결론
현재 진행하는 작업은 filter를 사용하여 데이터 가공이 필요한 작업이 아니고, redis rBatch SortedSet에 데이터를 addAsync 하는 작업이기 때문에 parallelStream으로 진행한다. 또한, 테스트 결과 데이터가 많아질수록 parallelStream이 성능적으로 우수한 것을 확인했다.
sequential streams vs. pararalle streams
- parallelStream은 개발자 모르게 내부적으로 스레드 풀을 만들어서 작업을 병렬화시킨다. 여기서 중요한 점은 parallelStream 별로 스레드풀을 만드는게 아니라는 점이다. 별도의 설정이 없다면 하나의 스레드 풀을 모든 parallelStream이 공유하게된다.
참고
'개발 > Test' 카테고리의 다른 글
[Test] Redis 조회 테스트 (0) | 2022.07.13 |
---|---|
테스트 자동화 (1) - Newman (0) | 2022.07.12 |
Comments