타임스탬프 로그로 처리 단계별 소요 시간을 측정해 병목을 찾은 경험
팀 프로젝트에서 배치 처리가 느리다는 말은 있었지만 어느 단계가 느린지 아무도 몰랐습니다. 다들 '전체적으로 느리다'고만 했습니다.
각 처리 단계 시작과 끝에 타임스탬프 로그를 심어서 단계별 소요 시간을 측정하였습니다. 결과를 보니 전처리 단계 하나가 전체 시간의 68%를 차지하고 있었습니다. 그 단계에서 루프 안에 정규식을 매번 컴파일하고 있었던 것이 원인이었고, 패턴 객체를 루프 밖에서 한 번만 만들도록 바꾸니 해당 단계가 9초에서 1.2초로 줄어들었습니다.
병목을 찾는 것이 추측이 아니라 측정에서 시작해야 한다는 것을 그 경험에서 배웠습니다. '여기가 느릴 것 같다'는 직관이 틀리는 경우가 더 많다는 것도 알게 되었습니다. 그 경험이 성능 문제를 대할 때 항상 먼저 측정하는 습관을 만들어주었습니다.