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

위키백과, 우리 모두의 백과사전.
(성능 분석에서 넘어옴)

프로파일링(profiling, 프로그램 프로파일링/소프트웨어 프로파일링) 또는 성능 분석은 프로그램의 시간 복잡도 및 공간(메모리), 특정 명령어 이용, 함수 호출의 주기와 빈도 등을 측정하는 동적 프로그램 분석의 한 형태이다. 프로파일링 정보는 대개가 프로그램 최적화를 보조하기 위해 사용된다. 프로파일링은 프로파일러(profiler)라는 도구를 사용하여 프로그램 소스 코드나 이진 실행 파일을 계측 분석함으로써 수행한다.

프로그램 이벤트 수집[편집]

프로파일러는 다양한 기술을 이용하여 데이터를 수집하는데, 여기에는 하드웨어 인터럽트, 코드 계측, 명령어 집합 시뮬레이션, 운영 체제 후킹, 성능 카운터를 포함한다.

프로파일러의 이용[편집]

CodeAnalyst 프로파일러의 그래픽 출력.

프로파일러의 출력물은 다음과 같다:

  • 주시되는 이벤트의 통계적 요약 (프로파일)
  • 기록된 이벤트의 스트림 (추적)
  • 하이퍼바이저와의 상호 작용 (이를테면 화면 디스플레이를 통한 지속적이거나 주기적인 감시)

역사[편집]

성능 분석 도구는 1970년대 초 IBM/360, IBM/370에 존재했고, 일반적으로 실행 코드의 핫 스팟을 감지하기 위해 프로그램 상태 규정어(PSW)를 기록한 타이머 인터럽트에 기반을 두었다. 이는 초기 표집의 한 예이다. 1974년 초 명령어 집합 시뮬레이터는 완전한 추적 및 기타 성능 감시 기능을 허용했다.

유닉스의 프로파일러 구동 프로그램 분석은 적어도 1979년으로 거슬러 올라가는데, 이 때 유닉스 시스템에는 개별 함수뿐 아니라 얼마나 많은 프로그램 실행 시간이 사용되었는지를 나열하는 기본 도구 "prof"를 포함했다. 1982년에 gprof은 이 개념을 완전한 호출 그래프 분석으로 확장하였다.[1]

1994년에 디지털 이큅먼트 코퍼레이션(DEC)의 아미타브 스리바스타바(Amitabh Srivastava)와 앨런 유스터스는 ATOM에 대해 기술한 백서를 출판했다.[2] ATOM은 프로그램을 자신만의 프로파일러로 변환하기 위한 플랫폼이다. 즉, 컴파일 타임에서 코드를 분석 대상의 프로그램에 삽입하는 것이다. 삽입된 코드는 분석 데이터를 출력한다. 스스로 분석하여 프로그램을 수정하는 이 기술을 계측(instrumentation)이라 부른다.

2004년 grpof와 ATOM의 백서가 현 시대의 가장 영향력 있는 PLDI 백서의 50가지 목록에 등장하였다.[3]

출력 기반의 프로파일러 종류[편집]

플랫 프로파일러(flat profiler)[편집]

호출 그래프 프로파일러(call-graph profiler)[편집]

입력에 민감한 프로파일러(Input-sensitive profiler)[편집]

같이 보기[편집]

참조[편집]

  1. gprof: a Call Graph Execution Profiler // Proceedings of the SIGPLAN '82 Symposium on Compiler Construction, SIGPLAN Notices, Vol. 17, No 6, pp. 120-126; doi:10.1145/800230.806987
  2. Amitabh Srivastava and Alan Eustace, "Atom: A system for building customized program analysis tools", 1994 (download) // Proceeding PLDI '94 Proceedings of the ACM SIGPLAN 1994 conference on Programming language design and implementation. Pages 196 - 205, doi:10.1145/773473.178260
  3. 20 Years of PLDI (1979–1999): A Selection, Kathryn S. McKinley, Editor

외부 링크[편집]