提高 Windows 应用的响应能力
本指南将帮助你通过优化启动和关键交互的延迟来提高 Windows 应用程序的响应能力。 快速响应式交互(也称为低延迟交互)可提供更好的用户体验。 了解交互预期、衡量当前持续时间以及根据交互类设定改进目标能够让用户体验和满意度显著提高。
优化响应行为的交互的分步指南
当应用程序启动、菜单导航或页面/内容加载缓慢时,客户感知会比较明显。 他们期待快速、无缝的体验,我们在下面分享了一些步骤和指导来帮助你更好地了解这些期望。
驱动延迟优化的基本步骤包括:
定义场景并添加 TraceLogging 事件。
创建用户在使用应用时将经历的关键交互列表,例如启动、打开菜单、导航到新页面和呈现内容等。对于每个交互,请添加一个用于度量和分析的启动事件和停止事件。 详细了解如何添加 TraceLogging,这是一种用于自描述 Windows 事件跟踪 (ETW).的格式。
根据交互类设置目标。
用户对应用的性能和响应能力有不同的期望,具体取决于交互类型。 例如,应用启动的速度与页面加载的速度。 考虑用户在应用中完成关键交互时所用时间的可接受范围。 其范围从 200 毫秒 (ms) 到 5 秒 (sec)。 然后为每个任务分配一个具有关联目标的交互类标签。 下面是一些基本指南,以及有关如何包括用户界面 (UI) 以改进响应感知的建议:
交互类标签 | 用户感知 | 延迟范围 | 示例 | 建议的 UI |
---|---|---|---|---|
快速 | 可察觉的最低延迟 | 100-200 毫秒 | 打开应用栏,右键单击菜单 | |
交互 | 快,但不够迅速 | 300-500 毫秒) | 退出应用,显示缓存的搜索结果 | |
暂停 | 不够快,但是感觉到响应 | 50 毫秒 - 1 秒 | 导航到不同页面,从已暂停状态恢复应用,显示 web 搜索结果 | 入口动画(例如,飞入新内容)可用于掩藏此场景所需的时间。 |
Wait | 由于场景工作量导致速度不快 | 1-3 秒 | 启动应用 | 旋转/等待光标可用于记录进度。 出口动画和入口动画(例如,飞出旧页面、飞入新页面)都可用于掩藏此场景所需的时间。 |
长时间等待 | 不再感觉到有响应 | 2-5 秒 | 大型应用启动(使用延长的初始屏幕),启动 HD 视频流 | 将显示“加载 UI”-如果可能,为用户提供“取消”选项。 正在加载的 UI 应显示在快速交互类中。 正在加载的 UI 不需要显示百分比或剩余时间。 |
卡住 | 长时间等待 - 为不可避免的长时间/复杂方案保留 | 5-10 秒 | 系统登录 | 将显示“加载 UI”或对话框 - 如果可能,为用户提供“取消”选项。 对话应显示在快速交互类中。 如果对话框为用户提供有用的上下文,那么对话框应显示百分比或剩余时间。 |
长时间运行 | 长时间操作 - 用户可能会执行多任务(在操作期间切换离开) | 10–30 秒 | 安装新功能或更新、大型文件下载 | UI 应设计为反映存在多任务的可能性。 应显示进度对话框,包括完成估计值(百分比、剩余时间等)。 或者,UI 可以完全最小化,并且仅当方案使用 Toast 通知完成时通知用户。 |
若要检查特定交互的确切持续时间,可以使用 Windows 性能分析器 (WPA) 来捕获和分析跟踪。
分析跟踪并找到改进机会。
通过打开刚刚在 Windows 性能分析器 (WPA)中捕获的跟踪来分析应用支持的每个关键交互的持续时间。
- 若要在 WPA 中打开跟踪,请在命令行中输入:
wpa.exe Trace.etl
- 展开“系统活动”下拉列表,然后双击“泛型事件”以打开分析视图。
- 选择与应用程序相关的事件系列并展开“提供程序名称”下拉列表,直到找到与要查找的关键交互关联的进程、任务名称和事件名称。 交互事件的持续时间将列在“时间”列以及图形中,其中显示了“持续时间”、“开始时间”和“结束时间”。
如果跟踪的持续时间不符合交互类目标(例如:500 毫秒),请确定应用的关键线程(可能为 UI 线程),并查看顶部堆栈中是否有 CPU 使用率和等待时间。 *请记住,执行分析时,某些问题可能不特定于你自己的应用程序代码。
- 若要在 WPA 中打开跟踪,请在命令行中输入: