D9fe4f99097b0245fc4e26ae25f8904d
WWDC20 10076 使用 Xcode Organizer 诊断性能问题

本文基于 WWDC20 Session 10076 - Diagnose performance issues with the Xcode Organizer


本 session 介绍了新版 Xcode Organizer 的功能,并通过 Demo 演示了如何利用 Xcode Organizer 让开发者查看 app 的界面滑动表现和 IO 性能指标,从而快速定位相关问题。

Xcode Organizer 概览

顾名思义,Xcode Organizer 内置于 Xcode,只需要点击菜单栏 Window -> Organizer 就可以开启运行。

当 app 运行时,系统会在被允许的设备上收集电池和性能相关数据,并发送到苹果服务器进行汇总,然后通过 Organizer 呈现给开发者。

全新的 UI 设计


Xcode 12 中的 Organizer 进行了全新的 UI 设计,新的交互界面使得开发者能够很轻松地比较不同版本 app 之间的性能表现。各个版本的 app 数据以柱状图排列展示,只需单击某一列,右侧面板就会刷新显示最新版本和所选版本的相关数据。
去年,苹果设置了一个使用量的最低门槛,只有当 app 的某个版本的使用量达到这个门槛,该版本的柱状图才会显示在 Organzier 中。而在 Xcode 12, 该门槛降低了 1/5,这就能让更多的开发者可以使用 Organizer 来监测 app 性能。

误差幅度

上图 x 轴 1.0.1 版本左边有一个图标,这说明当前版本的用户量比较少,可能会导致统计数据误差幅度较大。

在该版本的右侧详情面板,会有额外的信息显示该版本的误差幅度是 15%。而随着该版本的使用量增加,误差幅度会逐步降低。当用户量达到一定规模,误差幅度足够低的时候,这些信息会从面板中移除。

新功能

今年 Organizer 提供了两个新的性能指标 Scroll hitchesDisk write diagnostics

Scroll Hitch

苹果提供了一个名为 Meal Planner 的 app 来直观地展示什么是 Scroll hitch
在下方第一张 gif 中,界面滚动时有明显的卡顿,第二张 gif 中则十分流畅。Scroll hitch 指的就是滑动界面时,已渲染的图像帧没有在预期的时间点从当前屏幕上移除。它通常会导致下一帧图像延迟出现或者被丢弃从而表现出卡顿和抖动。

Hitch rate

将图像帧延迟显示在屏幕上的时间总和 Hitch time, 除以用户滑动屏幕的持续时间 Scroll duration,可以得到一个比例 Hitch rate, 它可以反映用户感受到的滑动卡顿的严重程度。

Hitch rate 可以被分为三档

  • <5 ms/s,滑动流畅
  • 5-10 ms/s, 每隔几秒会有图像帧被丢弃,轻微卡顿
  • > 10 ms/s,图像帧被频繁地丢弃,严重卡顿
top Created with Sketch.