SpringWatch 로직 속도 체크

최준호·2024년 7월 23일
0

Spring

목록 보기
48/48
post-thumbnail
post-custom-banner

🔴 StopWatch

spring에서 자체적으로 제공해주는 StopWatch 라이브러리로 간편하게 로직의 성능을 체크해볼 수 있다.

🟠 사용법

🟢 객체 만들기

import org.springframework.util.StopWatch;

StopWatch stopWatch = new StopWatch();
stopWatch.start();
stopWatch.stop();

위와 같이 객체로써 받아오면 끝이다.

그리고 start와 stop으로 시간을 체크할 수 있다.

🟢 시간 체크하기

stopWatch.start("Task1");
stopWatch.stop();
stopWatch.start("Task2");
stopWatch.stop();
stopWatch.start("Task3");
stopWatch.stop();

log.info("stopwatch 결과 {}", stopWatch.prettyPrint());
log.info("stopwatch 총 걸린 시간 {}", stopWatch.getTotalTimeMillis());

위와 같이 stopWatch에 이름을 정해주고 start와 stop을 반복해주면 된다.

그리고 마지막으로 결과와 총 걸린 시간을 찍어서 눈으로 확인해볼 수 있다.

🟠 예시

🟢 실제 사용된 소스

    public DeDuplicateTarget getDeduplicateTarget(Object data) throws Exception {
        StopWatch stopWatch = new StopWatch();
        stopWatch.start("init");
        // 기본 설정된 리스트 가져오기
        ... 중복 인원 가져오는 로직
        stopWatch.stop();
        stopWatch.start("get duplicatedUserList");
        // 제거할 리스트 가져오기
        stopWatch.stop();
        stopWatch.start("duplicatedUserList process");

        stopWatch.start("get push list");
        ... push list 가져오는 로직
        stopWatch.stop();
        
        stopWatch.start("remove reservation user");
        ... 예약 인원 제거 로직
        stopWatch.stop();            		
        stopWatch.start("remove push user");
        ... 푸시 발송 제거
        stopWatch.stop();
        stopWatch.start("get result push user");
        // 발송될 유저 리스트
        stopWatch.stop();
        
        log.info("stopwatch 결과 {}", stopWatch.prettyPrint());
        log.info("stopwatch 총 걸린 시간 {}", stopWatch.getTotalTimeMillis());

        return DeDuplicateTarget.builder()
                .build();
    }

결과는 다음과 같이 확인해 볼 수 있다.

현재 duplicated user list를 가져오는데 75프로의 시간이 걸리고 있어 해당 부분을 수정해야 된다는 걸로 볼수 있다.

혹여라도 api의 속도가 너무 느리거나 504 에러가 뜬다면 다음과 같이 로직의 속도를 체크해볼 수 있을것 같다!

profile
해당 주소로 이전하였습니다. 감사합니다. https://ililil9482.tistory.com
post-custom-banner

0개의 댓글