위키득계정 ↗
기술

프로파일링 (컴퓨터 프로그래밍)

프로파일링 (컴퓨터 프로그래밍)기술
영문명
Profiling
측정 예
실행 시간, 호출 수, 메모리 사용 등
대표 방식
계측과 표본 추출
주요 목적
병목의 근거를 찾고 개선 효과를 확인
프로파일링은 프로그램 실행에서 시간과 메모리 사용, 호출 빈도 등의 정보를 수집해 분석하는 작업이다. 실제로 자원을 많이 쓰는 부분을 찾는 데 활용한다. 한 번의 측정 결과가 모든 입력과 환경에서의 성능을 대표하지는 않는다.

추측 대신 실행 자료 보기

코드가 복잡해 보이는 부분과 실제로 시간이 많이 드는 부분은 다를 수 있다. 프로파일링은 실행 중 관찰한 자료로 어느 부분을 우선 조사할지 판단하게 돕는다. 실행하지 않는 경로의 비용까지 한 번에 알려 주는 것은 아니다.

계측과 표본 추출

함수 진입과 종료 등의 사건을 기록하는 방법과 일정 간격으로 실행 상태를 표본 추출하는 방법이 있다. 얻는 정보의 성격과 측정 부담이 서로 다를 수 있다. 어떤 방식으로 수집했는지에 따라 결과를 해석해야 한다.

자기 시간과 누적 시간

함수 자신의 작업에 쓴 시간과 그 함수가 호출한 작업까지 포함한 시간은 다르다. 누적 시간이 크다고 그 함수 본문의 연산만 바꾸면 해결된다고 단정할 수 없다. 호출 관계와 반복 횟수를 함께 살펴야 한다.

비교 조건을 맞추기

입력과 부하, 캐시 상태, 외부 서비스 응답 등이 바뀌면 결과도 달라질 수 있다. 개선 전후를 비교할 때 측정 조건을 맞추고 반복 관찰할 필요가 있다. 실제 시간 측정과 알고리즘의 점근적 복잡도 증명도 서로 다른 작업이다.

관련 문서

디버거 / 알고리즘 / 캐시 / 기억 장치 / 소프트웨어