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 |
Tags
- Reality Composer
- Hand Pose Detect
- SF Symbols 3.0
- AppleEvent
- profile
- ProRAW
- CoreML
- AVFoundation
- actor
- User Enrollment
- WWDC 2021
- DooC
- detent
- SF Symbols
- Object Capture
- NSUserActivity
- App Clip
- AR Quick Look
- Xcode Organizer
- Xcode Cloud
- DriverKit
- Physical Audio
- Mac
- concurrency
- swiftUI
- async
- SWiFT
- Hand Action Detect
- METAL
- MDM
Archives
- Today
- Total
nyancoder
WWDC 2021 - Diagnose Power and Performance regressions in your app 본문
WWDC/WWDC 2021
WWDC 2021 - Diagnose Power and Performance regressions in your app
nyancoder 2021. 9. 28. 00:20원본 영상: https://developer.apple.com/videos/play/wwdc2021/10087/
Key performance metrics
- 성능 최적화를 위해서 Xcode Organizer나, App Store Connect API가 제공하는 지표 및 진단을 사용할 수 있습니다.
- Xcode Organizer는 배터리, 시작 시간, 멈춤 비율, 메모리, 디스크 쓰기, 스크롤 히치, 앱 종료의 7가지 지표를 수집합니다.
- 이 7가지 측정 항목은 Xcode Organizer의 왼쪽 메뉴에서 선택할 수 있습니다.
- 배터리 및 종료와 같은 일부 항목에서는 다양한 이벤트 유형을 자세하게 설명하기 위해 하위 범주가 있을 수 있습니다.
- 원하는 단말 종류나 사용자의 백분위수 또한 선택할 수 있습니다.
- 예를 들어 실행 중 종료의 차트에서는 최신 버전의 크래시가 크게 증가했음을 알 수 있습니다.
- 이처럼 다양한 정보를 얻을 수 있지만, 정보가 너무 많기 때문에 성능 최적화를 어디에서 시작할지는 파악하기 어려울 수 있습니다.
Discovering regressions
- 이제 Xcode Organizer는 지표의 추세를 파악하여 회귀 항목에 표시할 수 있습니다.
- 이런 값은 마지막 릴리즈와 최신 릴리즈들의 평균값에서 지표의 차이 등을 통해 결정됩니다.
- 위 예제에서는 기존까지는 평균 11.1초가 걸렸으나 최신 버전에서는 2.5초로 갑자기 상승하여 회귀 항목에 표시됩니다.
- 따라서 회귀 탭을 살펴보면 최신 버전에서 성능이 저하된 항목들을 확인할 수 있습니다.
- 회귀 탭의 왼쪽에는 더 나은 앱을 만들기 위해 집중해야 하는 항목이 표시됩니다.
- 각 항목에는 어떤 지표가 얼마나 많은 양이, 어떤 백분위수에 대해 분석되었는지가 요약되어 있습니다.
- 예를 들어 앱 종료 항목을 보면 우선 상단에 충돌을 일으키는 잘못된 명령이 표시됩니다.
- 그 아래에는 내 앱의 지난 4개 릴리스에 대한 크래시 차트가 나타납니다.
- 차트에는 영향을 받은 기종과 백분위수가 표시됩니다.
- 또 다른 예에서는 작업 시간 초과에 대한 지표를 볼 수 있습니다.
- 작업 시간 초과 지표에서는 앱이 백그라운드로 전환될 때 최대 30초 동안 작업을 수행할 수 있다는 점을 고려해야 합니다.
- 만일 제시간에 작업을 완료하지 못하면 강제 종료되어 다음 실행이 오래 걸릴 수 있습니다.
- 다음 예에서는 정확한 원인은 알기 어렵지만, 디스크 쓰기가 지난 릴리스에서 28% 증가했다는 것을 알 수 있습니다.
Disk write insights
- 디스크는 CPU나 메모리와 같이 제한된 리소스입니다.
- 과도한 디스크 쓰기는 디스크의 수명을 줄일 수 있습니다.
- 잘못된 디스크 사용은 화면이나 UI가 일시적으로 멈추는 원인이 되기도 하며, 배터리를 더 소모할 수 있습니다.
- 따라서 디스크 쓰기 최적화를 통해 사용자 경험을 개선해야 합니다.
- Xcode Organizer의 디스크 쓰기 보고서를 통해서 주로 디스크를 많이 사용하는 지점을 확인할 수 있습니다.
- 이러한 보고서는 앱 분석 공유에 동의 한 장치에서 수집되며, 스택 추적에 대한 정보를 포함합니다.
- 이 창에서는 자세한 스택 정보를 얻을 수 있을 뿐 아니라, 수신된 로그 수, OS 버전 및 하드웨어 모델 분류에 대한 통계도 얻을 수 있습니다.
- 때로는 이러한 원인이 라이브러리의 깊숙한 스택에 있을 수 있습니다.
- 이 경우 문제의 원인을 찾기 위해서는 특정 도메인 지식이 필요하거나 시간이 많이 걸릴 수 있습니다.
- Xcode 13에서 Organizer에는 Insights라는 새로운 필드를 통해 이러한 문제를 개선할 수 있습니다.
- 보고서가 수신되면 이처럼 잘 알려진 패턴이 있는지를 검색하여 일치하는 항목이 있으면 문제 해결을 위한 제안과 함께 문제가 강조되어 표시됩니다.
- 위의 예제에서는 DB에서 많은 디스크를 사용하는 알려진 사례이므로 색인을 추가하라는 제안이 표시됩니다.
- 예제에서 제안된 방법을 검증하기 위해 현재의 상태를 프로파일링 해보면 약 180MB를 780ms동안 기록하는 것을 확인할 수 있습니다.
- 제안된 방법을 적용한 이후에는 해당 함수로 인한 쓰기가 0으로 효율적으로 작동하는 것을 볼 수 있습니다.
- 위의 예제인 SQLite에 인덱스를 적용하는 것은 한 예제로, 그 이외 사례에 대해서도 지원을 지속적으로 하고 있습니다.
App Store Connect APIs
- Xcode Organizer 외에도 App Store Connect API를 통해서 이러한 정보에 대해 접근할 수 있습니다.
- 예를 들어 perfPowerMetrics에 GET 요청을 하면 최신 버전의 지표 및 정보를 JSON 형식으로 얻을 수 있습니다.
- 이 부분의 인사이트 섹션을 보면 각 정보에 대한 지표와 요약을 확인할 수 있습니다.
- 예제의 요약 정보를 보면 해당 정보가 Xcode Organizer에서 발견한 잘못된 명령으로 인한 종료라는 것을 알 수 있습니다.
- 지표 항목에서는 영향을 받는 기기들에 대한 백분위나 장치 목록을 얻을 수 있습니다.
- 동일하게 진단 보고서의 경우 diagnosticSignatures에서 GET 요청을 통해 얻을 수 있습니다.
- 응답에는 상위 정보 목록이 있으며 각 항목에는 관련 세부 정보에 대한 링크가 있습니다.
- 세부 정보에 대해 GET을 통해 정보를 얻어오면 자세한 진단 로그 및 제안을 확인할 수 있습니다.
- 이와 같은 정보들을 활용하여 Xcode Organizer의 Regressions탭에 나오는 상위 항목들을 확인해 개선해 나가는 것이 좋습니다.
'WWDC > WWDC 2021' 카테고리의 다른 글
WWDC 2021 - Discover account-driven User Enrollment (0) | 2021.10.13 |
---|---|
WWDC 2021 - Discover Metal debugging, profiling, and asset creation tools (0) | 2021.10.07 |
WWDC 2021 - Detect people, faces, and poses using Vision (0) | 2021.09.17 |
WWDC 2021 - Design great actions for Shortcuts, Siri, and Suggestions (0) | 2021.09.14 |
WWDC 2021 - Demystify SwiftUI (1) | 2021.09.08 |
Comments