WWDC 정리/WWDC 2025 정리
[WWDC2025] SwiftUI 최적화 프로파일링 - Optimize SwiftUI performance with Instruments (2)
jake-kim
2025. 9. 3. 01:47
SwiftUI 프로파일링
- Instrument > SwiftUI 선택하고 프로파일 수행
- 먼저 SwiftUI 로 되어있는 꺽쇠를 클릭 > View Body Updates > 영역을 드래그하여 지정한 후 해당 영역 set Inspection Range And Zooms 클릭 > Time Profiler 클릭
- 이전 포스팅 글 참고: https://ios-development.tistory.com/1812
- 먼저 SwiftUI 로 되어있는 꺽쇠를 클릭 > View Body Updates > 영역을 드래그하여 지정한 후 해당 영역 set Inspection Range And Zooms 클릭 > Time Profiler 클릭

- Time Profiler는 정기적으로 샘플을 추출하여 현재 실행중인 함수에 대한 분석을 시도
- 뒤에서 나올 예제는 body가 실행되는 동안 프로파일링

- WWDC 영상처럼 호출 스택이 여러가지가 표출됨
- 이 중에서 살펴볼 것은 LandmarkListItemView이므로 command + F를 하여 검색

- 왼쪽을 보면 각 call stack안에 해당하는 프레임에 대한 소요 시간을 의미
- 여기서 가중치가 높은 프레임을 찾아서 그 코드를 파악하기가 가능
- 그 중에서 body부분이 관심이 있으므로 여기를 클릭해서 확인

- 프로파일링하기
- 왼쪽을 더 보면, 아래와 위가 차이가 많이 나는 구간을 파악이 가능
- 첫번째: 58.9%에서 73.7로 간 부분
- 두번째: 31.6%에서 57.9%로 간 부분

- 클릭하면 해당 부분의 코드가 표출

- 프로파일링 결과 NSMeasurementFormatter 부분으로 확인
- 코드에서 이 부분을 확인

- body에서 이 distance 변수를 뷰가 업데이트 될때마다 호출하고 있음

- 프로파일링을 하면 시간이 ms 단위로 적게 느껴지지만 이 시간들이 누적이 되면 사용성에 영향을 줄 수 있으므로 개선이 필요
(SwiftUI가 body를 실행하는데 걸리는 시간을 이해하는데 먼저 render loop 개념이 필요한데, 이 개념은 다음 글에서 계속..)
* 참고