iOS 13에 새롭게 추가된 Metric Kit 대단합니다.
어제는 @EnKUMA 선생의 "GKE에 gcloud 명령을 위한 Pod을 배치하면 꽉 채워집니다." 보도입니다.
ZOZO 기술 iOS 엔지니어@ahiru입니다.
본고는 iOS13Xcode11에서 새로 추가된 프레임워크 중 하나인 MetricKit에 대한 조사 등을 총결하였다.
WWDC 2019의'Improving Battery Life and Performance'에서 MetricKit의 상세한 상황을 설명했기 때문에 이 세션을 바탕으로 MetricKit가 무엇인지, 무엇을 할 수 있는지 등을 중심으로 작성합니다.
What's MetricKit?
애플 문서 아래와 같다.
Aggregate and analyze per-device reports on power and performance metrics
MetricKit는 장치의 응용 프로그램의 출력과 성능 등을 수신하는 프레임워크입니다.
MetricKit를 사용하면 배터리와 성능에 미치는 영향을 계량화할 수 있습니다.
즉, 응용 프로그램의 성능을 향상시키는 토대에서 어떤 기능이 병목이 되었는지, 어떤 원인이 시작 시간을 느리게 했는지 등 원인의 특정한 원인을 상당히 간단하게 조사할 수 있다.
측정 유형
두 개의 도량이 존재한다. 기본 도량과 성능 도량이다.
Battery Metrics
두 개의 도량이 존재한다. 기본 도량과 성능 도량이다.
Battery Metrics
Performance Metrics
도량을 가져오는 세 가지 도구
iOS13Xcode11에서 도량을 수집하는 세 가지 기능이 추가되었습니다.
아래에 소개된 3가지 기능을 잘 활용하여 각 개발 단계(개발·테스트/베타판/발행판)에서 도량을 각각 수집할 수 있다.
1. XCTest Metrics
지금까지 XCTest에서 도량을 얻을 수 있었지만 얻을 수 있는 도량이 증가했다.
사용자 인터페이스 테스트 단원 테스트는 모두 사용할 수 있다.
measure(metrics: [XCTMetric], block: () -> Void)
func testPhotoUploadPerformance() {
let app = XCUIApplication()
// 実行にかかる時間を測定
measure() {
app.buttons["Apply Effect"].tap()
app.dialogs["alert"].buttons["OK"].tap()
}
}
func testPhotoUploadPerformance() {
let app = XCUIApplication()
// 実行にかかる時間 / メモリ使用量 / CPU使用率 を測定する
measure(metrics: [XCTClockMetric(),
XCTMemoryMetric(application: app),
XCTCPUMetric(application: app)]) {
app.buttons["Apply Effect"].tap()
app.dialogs["alert"].buttons["OK"].tap()
}
}
testApplicationLaunchTime
또한 새로운 UI 테스트의 각 대상에는 애플리케이션 시작 테스트가 자동으로 추가됩니다.
func testApplicationLaunchTime() {
measure(metrics: [XCTOSSignpostMetric.applicationLaunch]) {
XCUIApplication().launch()
}
}
이 테스트를 실제로 실행하는 사람은 알 수 있지만 응용 프로그램은 5회 정도 시작됩니다.그리고 테스트의 실행 단추 아래에 상세한 단추가 표시되고 누르면 아래의 팝업 단추가 표시됩니다.
5회 시작의 평균 시간은 평균값으로 표시되며 베이스라인으로 설정할 수 있습니다.즉, 그 프로그램의 시작 시간의 기준값이다.
자신이 개발 중인 응용 프로그램에 새로운 기능 등을 추가할 때 시작 시간이 기준치보다 늦으면 이 기능의 성능이 적당하다고 말할 수 없다.
이제 성능 면에서 재광택 테스트를 진행할 수 있다.
성능 테스트를 위한 참고 사항은 다음과 같습니다.
2. MetricKit
도량을 수집하는 장치의 프레임워크입니다.
그것은 모든 사용자가 응용 프로그램을 사용할 때의 상황을 이해하는 데 도움이 된다.
주로 베타판 발행판의 상세한 도량을 수집하는 데 쓰인다.
구현 방법
설치 방법은 매우 간단하다.
클래스를 만들고 도량을 받아들일 수 있습니다.그리고 데이터 (도량) 를 수집하기 시작한다.
class MySubscriber: NSObject, MXMetricManagerSubscriber {
var metricManager: MXMetricManager?
override init() {
super.init()
metricManager = MXMetricManager.shared
// メトリックスの受信を許可する
metricManager?.add(self)
}
deinit {
metricManager?.remove(self)
}
func didReceive(_ payloads: [MXMetricPayload]) {
for metricPayload in payloads {
// 各自、ペイロードをサーバーに送ったり、ファイルに保存したりする
}
}
}
MetricKit를 사용하면 응용 프로그램이 언제 어디서 얼마나 사용되었는지 간단히 알 수 있습니다.24시간이 지나면 요약이 작성되고 디바이스로 돌아갑니다.상술한 실시 방식은 매일 자동으로 도량을 수집한다.
mxSignPost
응용 프로그램의 기능이나 동작에 대한 메일을 수집할 수 있습니다.
실현 방법은 매우 간단하다. 대상의 곳을 mxsignPost로 둘러싸기만 하면 된다.
let photosLogHandle: OSLog = MXMetricManager.makeLogHandle(category: "Photos")
mxSignpost(.begin, log: photosLogHandle, name: "SavePhoto")
// パフォーマンス計測したい処理をここに記述
mxSignpost(.end, log: photosLogHandle, name: "SavePhoto")
위에서 설명한 대로 메트릭키트는 자동으로 메트릭을 수집합니다.3. Xcode Metrics Organizer
코드를 변경하지 않고 Organizer의 집합 데이터를 볼 수 있습니다.
주로 발행판에 나타난 문제를 수집하는 데 쓰인다.
창 -> 원래 대소문자 -> 미터법 탭에서 볼 수 있습니다.
개인이 개발한 응용 프로그램에서 확인한 결과 여기입니다.(업데이트 후 부팅 시간이 단축되어 기쁩니다...!!!)
너는 시동 시간과 배터리 사용량 등의 데이터를 볼 수 있다.
버전마다 확인할 수 있기 때문에 테스트 시 성능에 문제가 없지만 발행판의 성능이 나빠지는 등도 간단하게 확인할 수 있다.
각종 도량이 도표에서 가시화되어 매우 재미있다.
여러분이 참여한 제품을 꼭 보십시오.
총결산
WWDC 2019는 내용이 풍부하기 때문에 Metrics 주위에서 언급된 국내 보도를 거의 보지 못했지만 실제로는 상당한 진화를 이루었다.
나는 응용 프로그램의 성능 향상은 모든 응용 프로그램 개발자들이 의식할 수 있는 부분이라고 생각한다.
XCTest에서는 다양한 도량에서 간단하게 성능 측정을 할 수 있고, MetricKit를 사용하면 발행판의 도량을 간단하게 얻을 수 있어 고품질의 응용 프로그램을 만드는 데 큰 은혜를 끼친다.
메트릭키트로 퀄리티 높은 어플리케이션 만들어보세요!!
Reference
이 문제에 관하여(iOS 13에 새롭게 추가된 Metric Kit 대단합니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/ahiru___/items/d794caae35ecfb4a1dfb
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(iOS 13에 새롭게 추가된 Metric Kit 대단합니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/ahiru___/items/d794caae35ecfb4a1dfb텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)