getUsers는 다른 서비스
메모리 16gb
public List<UserResponse> getUsers(List<Long> userIds) {
List<UserResponse> users = new ArrayList<>();
for (Long userId : userIds) {
User user = userRepository.findById(userId)
.orElseThrow(() -> new DistoveException(ACCOUNT_NOT_FOUND));
users.add(UserResponse.of(user.getId(), user.getNickname(), user.getProfileImgUrl()));
}
return users;
}
for문으로 userRepository를 계속해서 찌르는 것은 비용 낭비가 굉장히 심함
→ In절을 찾아보는 것이 어떨지?
기존
수정
public List<UserResponse> getUsers(List<Long> userIds) {
List<User> userList = userRepository.findByIdIn(userIds);
List<UserResponse> users = new ArrayList<>();
for (User user : userList) {
users.add(UserResponse.of(user.getId(), user.getNickname(), user.getProfileImgUrl()));
}
return users;
}
db 접근을 리스트 형식으로 한 번에 했더니 성능이 굉장히 상승한 것을 볼 수 있음
결론
어떤 하나의 메서드에 효율만 상승시킬 수 있어도 서비스 전체에 성능이 향상될 수 있음
이 메서드는 다른 곳에서도 사용되기 때문에 다른 서비스에도 큰 영향을 미침