문제 상황
사용자가 선택한 카테고리 ID들이 모두 유효한 카테고리인지 검증하는 로직에서 다음과 같은 코드를 작성했습니다.
boolean allValid = validCategoryIds.containsAll(categoryIds);
이때 IDE에서 "Call to 'list.containsAll(collection)' may have poor performance" 경고가 발생했습니다.
성능 차이 분석
List.containsAll() 방식:
- 시간복잡도: O(n*m)
- categoryIds의 각 요소마다 validCategoryIds 전체를 순차 탐색
- 카테고리 수가 늘어날수록 성능이 급격히 저하
HashSet.containsAll() 방식:
- 시간복잡도: O(n+m)
- HashSet 생성 비용 O(n) + 해시 기반 조회 O(m)
- 카테고리 수가 늘어나도 안정적인 성능
최종 해결책

현재는 카테고리 수가 적지만, 서비스 확장을 고려하여 처음부터 효율적인 자료구조를 선택했습니다. 약간의 코드 복잡성 증가가 있지만, 확장성과 성능 안정성을 확보할 수 있습니다.
'Spring 7기 프로젝트 > 모임 플렛폼 프로젝트' 카테고리의 다른 글
| Elasticsearch 완벽 가이드: 실무에서 알아야 할 모든 것 (1) | 2025.07.25 |
|---|---|
| 도메인 경계 분리를 통한 Auth와 User 도메인 리팩토링 (0) | 2025.07.24 |
| Flyway와 데이터베이스 마이그레이션 관리 (0) | 2025.07.23 |
| Momo 프로젝트 - DDD 기반 애그리거트 설계와 데이터 모델링 (0) | 2025.07.22 |
| 모임 플랫폼의 사용자 신뢰도 시스템과 성능 최적화 (0) | 2025.07.21 |