Highlight
Xcode 12 的 Organizer 在无需改动 App 的前提下,把同意共享设备上的聚合电量、性能和 I/O 数据做成版本对比、scroll hitch 指标与 disk write 诊断报告。
核心内容
做 App 性能优化时,开发者常遇到一个尴尬问题:手里的设备和测试脚本只能覆盖少量场景,真正的用户设备、系统版本、使用方式会复杂得多。你知道要提高电池续航和流畅度,却很难判断下一个版本最该先修哪里。(00:30)
Xcode Organizer 给出的入口很直接:打开 Xcode,选择 Window > Organizer。App 不需要做任何改动。用户同意共享后,Apple 会收集电量、性能和 I/O 数据,在服务器端聚合,再通过 Organizer 返回给开发团队。(01:43)
2020 年的变化有三块。Organizer 增加了 scroll hitch 指标,用来衡量滚动时帧是否按预期时间出现在屏幕上;增加了 disk write diagnostics reports,用调用栈帮你定位过量写盘;同时重做了交互界面,让两个 App 版本的指标对比变成一次点击。(02:41)
演示里的 Meal Planner 很像真实项目。新版本加入自定义照片和菜谱后,Organizer 先显示 disk writes 在 2.2 版本突然升高,再通过 Reports > Disk Writes 把问题拆成不同 signature。开发者从 stack trace 跳回对应代码,修复后回到 metrics 确认数据恢复。(08:31)
详细内容
打开 Organizer 就能看到线上聚合指标
(00:51)Organizer 跟随 Xcode 提供,不要求 App 集成额外代码。它展示的是同意共享设备上的聚合 battery、performance 和 I/O metrics,适合回答“真实用户已经遇到了什么问题”。
Xcode > Window > Organizer
source = consented user devices
aggregation = Apple servers
metrics = battery, performance, IO
app changes required = none
关键点:
Window > Organizer是本场 session 明确给出的入口。- 数据来自同意共享的设备,并由 Apple 聚合后返回。
- 这类数据适合发布后观察,不替代本地 Instruments 或 XCTest 性能测试。
- 文章不把这些数据写成实时日志,因为 transcript 只说明它们会被聚合后展示在 Organizer 中。
scroll hitch rate 把滚动卡顿变成可比较指标
(03:19)Scroll hitch 指滚动过程中,某个渲染帧没有在预期时间出现在屏幕上。用户看到的结果是跳动、迟滞或掉帧。
hitch rate = hitch time / scroll duration
smooth range = less than 5 ms/s
warning range = 5 to 10 ms/s
poor range = greater than 10 ms/s
关键点:
hitch time是帧额外花费的总时间。scroll duration是用户在 App 内滚动的总时间。- 小于 5 ms/s 时,用户大多会感到滚动顺滑。
- 5 到 10 ms/s 表示每隔几秒就会掉帧。
- 大于 10 ms/s 表示掉帧会频繁出现,滚动体验会变差。
新 UI 用版本对比定位发布回归
(05:45)Xcode 12 的 Organizer 新界面支持点击旧版本,与最新版本做并排对比。演示里,Meal Planner 的最新版本在 Camera 和 Bluetooth 的 battery usage 子类别上升,开发者马上知道下一步要查哪里。
open Organizer
select an older app version
compare latest version with selected version
inspect metric subcategories
check limited-usage icon and margin of error
关键点:
- 版本对比是单击旧版本后触发的交互,不需要手动导出表格。
- battery usage 会继续拆到子类别,演示中出现了 Camera 和 Bluetooth。
- Xcode 12 把展示数据所需的使用量门槛降低到原来的五分之一。
- 使用量有限的版本会显示图标和误差范围;随着更多用户升级,误差范围会下降。
disk write diagnostics 从指标峰值走到调用栈
(05:00)Disk write diagnostics logs 会在 24 小时内写盘超过 1GB 时聚合。它补齐了上一年只有 disk write metrics 时缺少的上下文。
Disk Writes metric spike
-> Reports > Disk Writes
-> inspect signatures
-> review device and OS breakdown
-> inspect 14-day report trend
-> read sample stack traces
-> mark signature as resolved
-> confirm metrics return after users adopt the fix
关键点:
- Disk Writes 报告按 signature 聚合问题,signature 下方会显示它占 disk writes 的比例。
- 右侧报告会按设备类型和系统版本拆分,并显示最近 14 天收到的 report 趋势。
- Organizer 提供 sample stack traces 和 Details 区域,帮助开发者回到造成写盘的代码路径。
- 演示修复后会把 signature 标记为 resolved,再等用户使用修复版本后回到 metrics 验证。
核心启发
-
做什么:把 Organizer 版本对比加入每次发布后的检查表。为什么值得做:Xcode 12 可以直接比较两个版本的电量、性能和 I/O 指标。怎么开始:新版本上线后打开 Window > Organizer,选中上一版,记录突然升高的指标和子类别。
-
做什么:为核心列表页建立滚动体验验收线。为什么值得做:scroll hitch rate 把用户感到的跳动拆成小于 5、5 到 10、大于 10 ms/s 三个范围。怎么开始:先用 Organizer 找线上 hitch 较高的页面,再配合 Session 10077 的 XCTest 在发版前覆盖同一条滚动路径。
-
做什么:把过量写盘当成发布回归单独跟踪。为什么值得做:Organizer 会在 24 小时写盘超过 1GB 时聚合 disk write diagnostics,并把 signature、比例、设备和系统分布展示出来。怎么开始:看到 Disk Writes 指标峰值后进入 Reports > Disk Writes,按 signature 分配修复人,并在修复后标记 resolved。
-
做什么:对低使用量版本单独标记数据可信度。为什么值得做:Xcode 12 更早展示数据,但使用量有限的版本会有误差范围。怎么开始:在发布看板里记录 Organizer 的 limited-usage 图标和 margin of error,等更多用户升级后再复查同一指标。
关联 Session
- Identify trends with the Power and Performance API — 把 Xcode Organizer 背后的电量、性能和诊断数据接入团队 dashboard、告警和 bug 系统。
- Eliminate animation hitches with XCTest — 用 XCTest 在发版前测量滚动和动画 hitch,补上 Organizer 线上指标之前的本地回归检查。
- What’s new in MetricKit — 了解 MetricKit 在 iOS 14 中新增的性能指标和诊断 payload,包括 animation hitches 与 disk writes。
评论
GitHub Issues · utterances