개인 앱 View 최적화

송훈기·2021년 9월 27일
0

App

목록 보기
1/2

개요

개인적으로 ToDoReminder 라는 앱을 만들었는데, 여러 기술과 View를 커스텀하여 만든 첫번째앱이다 보니 많은 시간이 소요되고 있다.

앱 링크
https://github.com/SSong-develop/ToDoReminder

앱에 달력과 Spinner 그외 RecyclerView Item View까지 커스텀해서 들어가다 보니 작업하면 어지럽기 따름이다.
앱을 사용하는데는 큰 문제는 없는데, 문득 과연 내가 만든 커스텀뷰는 최적화를 잘 했는가??? 에 대한 의문점이 생겼고 이를 분석해보았다.

OverDraw(오버드로)

첫번째로 확인해본 것은 OverDraw다.
오버드로라는 것은 앱이 같은 프레임 내에서 두번 이상 같은 픽셀을 그릴 때 오버드로가 발생한다. 그러므로 최대한 이러한 작업이 생기는 구간을 없애주는 것이 중요하다.

공식문서
https://developer.android.com/topic/performance/rendering/inspect-gpu-rendering?hl=ko#profile_rendering
보다 자세한 내용은 공식문서를 확인해주세요.

오버드로 설정을 켜고서 본 결과는 충격적이였다.

다시 색상을 봐도 어지럽다.
Coordinator Layout이 들어가는 부분은 4회 이상의 OverDraw가 발생했고, 그외에도 2회,1회가 발생하는 곳들이 존재했고, 그 부분은 거의 RecyclerView에서 일어났다.

HWUI

두번째로 HWUI 프로파일링을 사용했다.
이걸 사용하게 되면 화면들이 반응하는 과정을 볼 수 있는데, 이 막대기가 곧 성능을 나타내기도 한다.
이것 또한 굉장히 어지럽다.

HWUI 프로파일링 막대기에서 나타내는 색상이 어떤 것을 의미하는 지는 위에 있는 공식문서를 확인하면 보다 자세하게 알 수 있다.

공식문서
https://developer.android.com/topic/performance/rendering/inspect-gpu-rendering?hl=ko#profile_rendering
보다 자세한 내용은 공식문서를 확인해주세요.

뷰가 처음 켜질 때 연산되는 내용 중 Vsync 지연과 관련된 내용이 많았고, 이는 과한 작업량을 의미하기도 합니다.
어쩔 수 없이 처음 켜지면 연산을 많이 해야하긴 하지만 어떻게 하면 저 하늘을 뚫을 듯 한 막대기를 줄일 수 있을지 고민해봐야 할 거 같습니다

profile
안녕하세요 송훈기입니다.

0개의 댓글