-
Notifications
You must be signed in to change notification settings - Fork 0
Open
Description
mapInfos 메서드 내에서 memberClient, schoolClient, courseClient를 순차적으로 호출하고 있습니다. 이 클라이언트 호출들은 서로 독립적이므로 CompletableFuture를 사용하여 병렬로 실행하면 I/O 대기 시간을 줄여 성능을 크게 향상시킬 수 있습니다. 특히 페이지 조회 시 여러 문제에 대해 이 메서드가 호출되므로 성능 개선 효과가 클 것입니다.
final var memberInfoFuture = java.util.concurrent.CompletableFuture.supplyAsync(() -> memberClient.getMemberInfo(problem.memberId()));
final var schoolInfoFuture = java.util.concurrent.CompletableFuture.supplyAsync(() -> schoolClient.getSchool(RequestType.JSON.getType(), problem.schoolCode())
.orElse(SchoolInfo.none()));
final var courseResultFuture = java.util.concurrent.CompletableFuture.supplyAsync(() -> courseClient.getParentCourses(problem.path()));
java.util.concurrent.CompletableFuture.allOf(memberInfoFuture, schoolInfoFuture, courseResultFuture).join();
return ProblemResponse.from(problem, memberInfoFuture.join(), schoolInfoFuture.join(), courseResultFuture.join());Originally posted by @gemini-code-assist[bot] in #135 (comment)
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels