ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Spring Stop Watch 로직 속도 체크
    개인 공부/spring 2024. 8. 5. 20:18
    728x90
    반응형

    🔴 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 에러가 뜬다면 다음과 같이 로직의 속도를 체크해볼 수 있을것 같다!

    728x90
    반응형

    '개인 공부 > spring' 카테고리의 다른 글

    동시성 제어 [3] Redis  (0) 2024.08.05
    동시성 제어 [2] DB Lock  (0) 2024.08.05
    동시성 제어 [1] java 처리  (0) 2024.08.05
    spring[19] Spring의 요청과 응답 과정  (0) 2021.06.19
    spring[18] Response 응답  (0) 2021.06.19
Designed by Juno.