안드로이드 UI 성능분석 툴 - Hierarchy VIewer
Hierarchy VIewer
준비작업
- 개발할 컴퓨터에 환경변수로
ANDROID_HVPROTO=ddm
을 추가한다. (이미 추가되었다면 다음단계부터 진행)
- Tools -> Android -> Android Device Monitor를 실행한다.
- 아래와 같은 팝업이 뜬다면 YES를 선택한다.(안뜨면 다음단계부터 진행)
- Android Device Monitor가 떴으면, 오른쪽 상단에서
Hierarchy Viewer
탭 선택
- 만약 탭이 없다면, 그림에서 표시된 부분의 가장 왼쪽 버튼(
Open Perspective
)를 선택하여 Hierarchy Viewer를 선택한다.
- 왼쪽의
Windows
탭에서 디바이스이름과 밑으로 현재 실행중인 엑티비티목록이 뜨는것을 확인한다. 만약, 목록이 갱신되지 않았다면 Refresh 버튼 클릭!
- 확인할 앱은 반드시
debug모드로 수행
되어야 한다.(build.gradle에서 debuggable 속성 true)
- 확인하고싶은 엑티비티를 더블클릭하면,
Tree View
앱에서 레이아웃 구조를 확인할 수 있다. 루트를 선택한 후에 아래 스크린샷에 표시된 버튼(Obtain Layout TIme)을 선택한다.
- 확인하고싶은 뷰를 선택한 후에, Measure, Layout, Draw에 걸린 시간과 그 시간의 정도를 나타내는 3개의 점을 확인한다.
- Measure : 자식뷰를 포함하여 선택한 뷰의 크기 결정 시간 (왼쪽 점)
- Layout : 자식뷰를 포함하여 선택한 뷰의 레이아웃 배치 시간 (중간 점)
- Draw : 자식뷰를 포함하여 선택한 뷰의 렌더링 시간 (오른쪽 점)
분석방법
- 리프노드, 혹은 자식뷰가 많지 않은 노드 중에 빨간점으로 표기된 노드를 찾는다. 대체적으로 이 뷰가 렌더링을 느리게한다.
Systrace
, Traceview
를 이용하면 추가정보를 더 얻을 수 있다.
- 자식뷰가 많은 노드이고 Measure가 빨간점으로 표기되었다면, 자식들의 노드를 살펴본다.
- 점이 노란색 / 빨간색 이더라도 실제로는 성능에 큰 영향을 미치지 않는 요소일 수 있다. 측정된 시간을 비교하면 도움이 된다.
Systrace
, Traceview
를 이용하면 추가정보를 더 얻을 수 있다.
- 루트 뷰노드는 모든 자식뷰가 완료되고 난 후에야 완료되므로, 일반적으로 Measure, Layout이 빨간점이고, Draw가 노란점이다.
- 20개 이상의 노드를 가진 뷰계층에서 Draw가 빨간점으로 표시된 리프노드가 있다면, 그 뷰는 Draw에 문제가 있으므로, onDraw 등의 Draw 메서드를 확인한다.
댓글 없음:
댓글 쓰기