코딩하는 개굴이

[안드로이드] Android Studio Profiler 을 이용한 성능 측정 및 UI 버벅거림 감지 본문

안드로이드

[안드로이드] Android Studio Profiler 을 이용한 성능 측정 및 UI 버벅거림 감지

개굴이모자 2023. 3. 13. 00:53
반응형

비동기 작업 관련 개발을 하고 있던 중, 생각 외로 시간이 오래 걸린다 싶은 경우가 있을 수 있다.

얼마나 걸리는지 파악해보고 Thread 분리를 수행할지 어찌 할지 등을 고려해야하기 때문인데, Android Studio 의 Profiler 를 활용해 이를 측정하고, UI Janky frame (버벅거림) 을 확인할 수 있는 방법에 대해 알아보자.

 

 

Android Studio Profiler

Android Studio Profiler (구 Android Monitor 도구) 는 앱의 CPU, Memory, Network, Battery 리소스를 사용하는 방법을 이해하는데 도움이 되는 실시간 데이터를 제공하는 도구이다.

 

기본적인 사용 방법에 대해 Developers 가이드에 기입되어있는 내용은 아래와 같다.

  1. Android 프로파일러에 현재 프로파일링 중인 프로세스와 기기가 표시됩니다.
  1. Sessions 창에서 확인할 세션을 선택하거나 새 프로파일링 세션을 시작합니다.
  1. 확대/축소 버튼을 사용하여 얼마나 많은 타임라인을 확인할지 관리하거나, Attach to live 버튼을 사용하여 실시간 업데이트로 건너뜁니다.
  1. 이벤트 타임라인에는 키보드 활동, 볼륨 조정 변경사항, 화면 회전 등 사용자 입력과 관련된 이벤트가 표시됩니다.
  1. CPU, 메모리, 네트워크 및 에너지 사용량의 그래프가 포함된 공유 타임라인 보기입니다.

 

 

특정 Method 의 소요 시간 확인하기

Profiler 의 사용 방법은 여러가지가 있지만, 오늘 시도해볼 것은 CPU 에서 특정 메서드가 얼만큼의 시간을 소모하고 있는지를 확인하는 것이다.

우선 + 를 누르고 프로파일한 프로세스를 선택하면 아래와 같은 화면이 보일 것이다.

여기서 CPU 를 선택하자.

 

우리는 특정 메서드를 따라가 확인할 것이기 때문에 Java/Kotlin Method Trace 를 Record 해볼 것이다.

Record 를 누른 상태에서 확인이 필요한 액션을 기기에서 수행하고 Stop 을 누르면 위와 같이 프로파일러는 녹화한 내용들에 대해 파싱을 수행한다.

파싱이 완료되면 아래와 같이 측정한 결과를 보여주는데, 우선 좌측에 있는 것이 Thread들이 돌아가는 것을 표현한 타임라인 그래프이다. 우측에서는 선택한 영역의 그래프에 대해 보기 쉽게 확장해주어 이를 확인하거나 Details 데이터를 볼 수 있다.

 

아래 화면과 같이 “All Thread” > ”FlowChart” 를 선택하고, “Thread Time” 을 확인하면, 일단 테스트한 시간에 대해 측정하려는 메서드가 총 얼만큼 잡아먹었는지 확인할 수 있다.

확인하고자하는 메서드인 “loadRandomBitmap” 을 검색하면 해당 메서드의 스레드 위치가 하이라이트 되므로 해당 메서드를 선택하면 시간을 보여준다.

 

음~ 총 이만큼 소요되었구나~ 하고 넘어갈 수 있긴하지만 만일 interval 이나 특정 상황에서 반복해서 호출되었던 메서드라면 1회 당 얼만큼 소요되었는지 감이 안잡힐 수 있다.

 

이럴때는 좌측 그래프를 조정해서 특정 섹션을 선택하고, ctrl+scroll 으로 확대하여 반복해서 호출되는 부분을 찾을 수 있다. 찾았다면 클릭하여 우측에서 동일하게 Flow Chart 를 선택하면 된다.

 

 

UI 가 ㅂ버버버버버ㅂ버벅인다 🥴

ℹ️
Android 10 이하에서는 아래와 파싱된 결과 그래프가 달리 표현될 수 있습니다.

간혹 이런일이 있으면 안되지만, main 에서 어쩔 수 없이 렌더링이 오래걸리는 경우가 있을 수 있을 것이다. 그렇게 되면 시스템은 강제로 프레임을 건너뛰게되고 사용자는 화면에서 깜박임을 보게 된다. 이것이 버벅거림 즉, “UI Jank” 라고 한다.

 

이처럼 개발 과정에서 UI 가 버벅일까 걱정이 된다면 이 또한 프로파일러에서 확인할 수 있다.

이번에도 CPU 를 확인할건데, “System Trace” 를 Record 해보자.

 

그러면 이와 같은 화면이 나온다. 그래프 전반에 걸쳐서 아래의 “Janky Frame” 이라는 곳에 빨간 선이 보인다면 그것이 UI 의 버벅임이 감지된 표시이다.

 

 

확대해서 해당 위치에 어떤 스레드의 어떤 메서드가 원인인지 확인하고 해결에 참고해보자 🧐

 

중요한게 날아가면 안되지…!

이렇게 녹화한 데이터는 사실 꽤 컴퓨터를 느려지게 만든다. 해보았으면 이거 왜이래 하는 경험을 할 수 있었을텐데, 그만큼 측정한 시간 대비 녹화한 용량이 어마어마해진다. (10초 내외의 측정에도 가볍게 10 - 30 MB 를 넘기도 한다.) 그렇기에 Android Studio 에서는 이걸 계속 들고 있지 않고, 저장하고 차후 불러올 수 있게 한다.

아래와 같이 디스크를 눌러 ~~~.trace 형태로 저장하고, 차후 + 를 눌러 저장 파일을 불러 파싱만 할 수도 있다.

 

 

 

위 내용 외에도 프로파일러의 사용 방법은 여러가지가 있다. 배터리, 네트워크 등…

본인은 사용해보지 않았지만 차후 사용해보면 또 추가 포스팅을 할터이니..!

프로파일러와 함께 꼼꼼한 개발을 해보자!

 

 

참고 링크

 


Uploaded by

N2T
반응형
Comments