XHProf
XHProf (계층형 프로파일러)
XHProf는 PHP 프로그램이 실행되는 동안 어디에서 시간과 메모리를 쓰는지 분석하는 경량 계층형 프로파일러예요. 이 페이지에서는 개요를 살펴봐요.
본문
XHProf는 가볍고(light-weight) 계층적이며 계측(instrumentation) 기반의 프로파일러입니다. 데이터 수집 단계에서는 프로그램의 동적 호출 그래프(callgraph)에서 아크(arc)에 대한 호출 횟수와 총괄(inclusive) 지표를 추적해요. 그리고 보고/후처리 단계에서는 벽(wall·경과) 시간, CPU 시간, 메모리 사용량 같은 배타적(exclusive) 지표를 계산합니다. 함수 프로파일은 호출자(callers) 또는 피호출자(callees) 기준으로 분해할 수 있어요. 재귀 함수의 경우에는 데이터 수집 시점에 호출 그래프의 사이클을 감지하고, 재귀 호출에 깊이(unique depth)로 구분되는 이름을 부여해 사이클을 피해 처리합니다.
XHProf에는 **PHP로 작성된 간단한 HTML 기반 사용자 인터페이스(UI)**가 포함되어 있어요. 브라우저 기반 UI로 프로파일 결과를 보기 쉽고, 동료와 결과를 공유하기도 쉽습니다. 호출 그래프 이미지 뷰도 지원합니다.
XHProf 리포트는 실행 중인 코드의 구조를 이해하는 데 자주 도움이 됩니다. 리포트의 계층적 특성 덕분에, 예를 들어 특정 함수가 어떤 호출 체인을 통해 호출됐는지를 알아낼 수 있어요.
또한 XHProf는 두 실행을 비교하는 "diff" 리포트나 여러 실행의 데이터를 집계(aggregate)하는 기능을 지원합니다. diff와 aggregate 리포트는 단일 실행 리포트와 마찬가지로 프로파일의 "flat" 뷰와 "hierarchical" 뷰를 모두 제공합니다.
추가 문서는 facebook xhprof 웹사이트에서 찾아볼 수 있어요.
주요 함수들은 다음과 같아요.
xhprof_enable— XHProf 프로파일링 시작xhprof_disable— XHProf 프로파일링 중지xhprof_sample_enable— 샘플링 모드로 XHProf 프로파일링 시작xhprof_sample_disable— 샘플링 모드로 XHProf 프로파일링 중지