Notice
Recent Posts
Recent Comments
Link
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | |
| 7 | 8 | 9 | 10 | 11 | 12 | 13 |
| 14 | 15 | 16 | 17 | 18 | 19 | 20 |
| 21 | 22 | 23 | 24 | 25 | 26 | 27 |
| 28 | 29 | 30 | 31 |
Tags
- Protocol
- UITextView
- Human interface guide
- 리팩토링
- map
- 스위프트
- SWIFT
- combine
- Observable
- Clean Code
- tableView
- uiscrollview
- RxCocoa
- Refactoring
- HIG
- 리펙토링
- ios
- uitableview
- collectionview
- ribs
- swift documentation
- MVVM
- swiftUI
- UICollectionView
- clean architecture
- 클린 코드
- rxswift
- Xcode
- scrollview
- 애니메이션
Archives
- Today
- Total
김종권의 iOS 앱 개발 알아가기
[WWDC2025] SwiftUI 최적화 프로파일링 - Optimize SwiftUI performance with Instruments (2) 본문
WWDC 정리/WWDC 2025 정리
[WWDC2025] SwiftUI 최적화 프로파일링 - Optimize SwiftUI performance with Instruments (2)
jake-kim 2025. 9. 3. 01:47SwiftUI 프로파일링
- 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 개념이 필요한데, 이 개념은 다음 글에서 계속..)
* 참고
'WWDC 정리 > WWDC 2025 정리' 카테고리의 다른 글
Comments