ストリーミングはほとんどのブラウザと
Developerアプリで視聴できます。
-
究極のAppパフォーマンスサバイバルガイド
パフォーマンスの最適化は、追跡が必要な指標や使用するツールが多く、困難なタスクのように思われます。しかし、心配はいりません。このAppパフォーマンスに関するサバイバルガイドは、開発プロセスを円滑にし、Appを使用する人々の素晴らしい体験に貢献するツール、メトリクス、パラダイムを理解するのに役立てることができます。
リソース
- Analyzing the performance of your shipping app
- App Store Connect API
- Improving app responsiveness
- MetricKit
- XCTest
関連ビデオ
WWDC23
WWDC21
WWDC20
- MetricKitの新機能
- Power and Performance APIでトレンドを特定する
- Xcode Organizerでパフォーマンス問題を診断する
- XCTestを使ってアニメーションヒッチを除去する
Tech Talks
WWDC19
-
ダウンロードArray
-
-
5:46 - Using MetricKit
class AppMetrics: MXMetricManagerSubscriber { init() { let shared = MXMetricManager.shared shared.add(self) } deinit { let shared = MXMetricManager.shared shared.remove(self) } // Receive daily metrics func didReceive(_ payloads: [MXMetricPayload]) { // Process metrics } // Receive diagnostics func didReceive(_ payloads: [MXDiagnosticPayload]) { // Process metrics } }
-
10:29 - Testing Scroll performance
func testScrollingAnimationPerformance() throws { app.launch() app.staticTexts["Meal Planner"].tap() let foodCollection = app.collectionViews.firstMatch let measureOptions = XCTMeasureOptions() measureOptions.invocationOptions = [.manuallyStop] measure(metrics: [XCTOSSignpostMetric.scrollDecelerationMetric], options: measureOptions) { foodCollection.swipeUp(velocity: .fast) stopMeasuring() foodCollection.swipeDown(velocity: .fast) } }
-
11:53 - Using mxSignpostAnimationIntervalBegin
func startAnimating() { // Mark the beginning of animations mxSignpostAnimationIntervalBegin( log: MXMetricManager.makeLogHandle(category: "animation_telemetry"), name: "custom_animation”) } func animationDidComplete() { // Mark the end of the animation to receive the collected hitch rate telemetry mxSignpost(OSSignpostType.end, log: MXMetricManager.makeLogHandle(category: "animation_telemetry"), name: "custom_animation") }
-
13:51 - Using XCTest to Measure Disk Usage
// Example performance XCTest func testSaveMeal() { let app = XCUIApplication() let options = XCTMeasureOptions() options.invocationOptions = [.manuallyStart] measure(metrics: [XCTStorageMetric(application: app)], options: options) { app.launch() startMeasuring() let firstCell = app.cells.firstMatch firstCell.buttons["Save meal"].firstMatch.tap() let savedButton = firstCell.buttons["Saved"].firstMatch XCTAssertTrue(savedButton.waitForExistence(timeout: 2)) } }
-
21:19 - Collect memory telemetry
// Collect memory telemetry func saveAppAssets() { mxSignpost(OSSignpostType.begin, log: MXMetricManager.makeLogHandle(category: "memory_telemetry"), name: "custom_memory") // save app metadata mxSignpost(OSSignpostType.end, log: MXMetricManager.makeLogHandle(category: "memory_telemetry"), name: "custom_memory") }
-
-
特定のトピックをお探しの場合は、上にトピックを入力すると、関連するトピックにすばやく移動できます。
クエリの送信中にエラーが発生しました。インターネット接続を確認して、もう一度お試しください。