개인적으로 ToDoReminder 라는 앱을 만들었는데, 여러 기술과 View를 커스텀하여 만든 첫번째앱이다 보니 많은 시간이 소요되고 있다.
앱에 달력과 Spinner 그외 RecyclerView Item View까지 커스텀해서 들어가다 보니 작업하면 어지럽기 따름이다.
앱을 사용하는데는 큰 문제는 없는데, 문득 과연 내가 만든 커스텀뷰는 최적화를 잘 했는가??? 에 대한 의문점이 생겼고 이를 분석해보았다.
첫번째로 확인해본 것은 OverDraw다.
오버드로라는 것은 앱이 같은 프레임 내에서 두번 이상 같은 픽셀을 그릴 때 오버드로가 발생한다. 그러므로 최대한 이러한 작업이 생기는 구간을 없애주는 것이 중요하다.
공식문서
https://developer.android.com/topic/performance/rendering/inspect-gpu-rendering?hl=ko#profile_rendering
보다 자세한 내용은 공식문서를 확인해주세요.
오버드로 설정을 켜고서 본 결과는 충격적이였다.
다시 색상을 봐도 어지럽다.
Coordinator Layout이 들어가는 부분은 4회 이상의 OverDraw가 발생했고, 그외에도 2회,1회가 발생하는 곳들이 존재했고, 그 부분은 거의 RecyclerView에서 일어났다.
두번째로 HWUI 프로파일링을 사용했다.
이걸 사용하게 되면 화면들이 반응하는 과정을 볼 수 있는데, 이 막대기가 곧 성능을 나타내기도 한다.
이것 또한 굉장히 어지럽다.
HWUI 프로파일링 막대기에서 나타내는 색상이 어떤 것을 의미하는 지는 위에 있는 공식문서를 확인하면 보다 자세하게 알 수 있다.
공식문서
https://developer.android.com/topic/performance/rendering/inspect-gpu-rendering?hl=ko#profile_rendering
보다 자세한 내용은 공식문서를 확인해주세요.
뷰가 처음 켜질 때 연산되는 내용 중 Vsync 지연과 관련된 내용이 많았고, 이는 과한 작업량을 의미하기도 합니다.
어쩔 수 없이 처음 켜지면 연산을 많이 해야하긴 하지만 어떻게 하면 저 하늘을 뚫을 듯 한 막대기를 줄일 수 있을지 고민해봐야 할 거 같습니다