Geon

Explore UI animation hitches and the render loop 본문

SwiftUI/지식 창고

Explore UI animation hitches and the render loop

jgkim1008 2024. 11. 9. 23:47

Hitch

- 히치란 앱에서 스코롤이나, 버튼을 탭했을때  자연스러운 연결을 위해 애니메이션이 적용되는데 이떄 애니메이션이 자연스럽게 안나올떄를 의미한다.

- 장애는 프레임이 예상보다 늦게 화면에 나타날떄 발생

- 렌더 루프가 제 시간에 프레임을 완료하지 못하면 버벅임 발생

 

 

Render Loop

(Event -> Commit -> Rnder Prepare -> Render execute -> Display)

- 앱은 터치이벤트를 처리하고 UI에 변경이 필요한지 결정(Event)

- 커밋단계에서는 앱은 UI업데으이트하고 렌더링을 위해 렌더링 서버에 제출(Commit)

- 렌더서버는 렌더링할수 있게 준비하고, 렌더 실행단계에서는 UI를 그리고 다음 VSync에서 프레임이 사용자에게 표시될수 있도록 한다.

 

 

커밋 히치, 랜더 히치

- 커밋히치란: 커밋작업이 1프레임 이상 16.67 밀리초 이상 커밋이 오래걸린 작업

- 랜더히치: 렌더서버가 레이어 트리를 제 시간(1프레임 이상 16.67 밀리초 이상)에 준비하거나 실행할수 없을떄 발생

 

 

Measuring hitch time

- Hitch time ratio(장애 시간 비율): 총 히치 시간을 지속 시간 간격으로 나눈값

- 히치 비율이 10ms/s 넘으면 XCTest로 확인 필요 (Eliminate Animation Hitches with XCTest) 보기

 

 

출저: https://developer.apple.com/videos/play/tech-talks/10855/

'SwiftUI > 지식 창고' 카테고리의 다른 글

Discover Observation in SwiftUI  (0) 2024.11.11
Demystify SwiftUI performance  (0) 2024.11.10
Image DownSampling  (1) 2024.11.08
Demystify SwiftUI  (0) 2024.11.07
Crash on startup(when iOS18 update)  (0) 2024.10.28