I1.04.3first-input versus steady-state latency设计研究

首次输入延迟与稳态延迟需分别测量

别名: FID · 冷热延迟 · first input delay

概念解释

同一次会话里,第一次点击往往比第五次慢。主线程还在跑启动脚本、字体在下载、JIT 还没热,第一次输入要在拥堵里插队。首次输入延迟(first-input delay)测的是这场拥堵;稳态延迟(steady-state latency)测的是拥堵过去之后,每一次跟手还剩多少。两笔账不能合成一个「平均响应」。平均会把唯一一次很慢的第一下稀释掉,而第一下正是人用来给产品定调的那一下。

机制

启动是一段非平稳过程。事件循环被解析、布局、水合、权限弹窗占用,输入事件排队。第一下的延迟里,真正的输入处理只占一小截,大部分是「轮到你」之前的等待。稳态之后,这些一次性工作消失,剩下的才是架构里固有的跟手成本。把两段混在一个直方图里,优化者会去削稳态的尾巴,却看不见启动窗口里那一次决定性的钝。

人的评价也不对称。第一下慢,会定下「这个应用沉」的先验;后面再快,先验要很多试次才能改。所以首次输入不只是一个技术峰值,它是体验的锚点。

怎么研究

按时间分段采样:会话前 3 秒、第 3–10 秒、10 秒之后,分别报告输入到像素的延迟分布。网页里的 First Input Delay / Interaction to Next Paint 就是这种分段的工程近似,但实验室仍应在装置上直接打时间戳。

自变量:是否包含启动期、是否预热、输入发生在第几次。 因变量:P50 / P95 延迟、分段后的分布形状、主观「第一下」与「用熟了」评分是否分离。

只在应用「准备好了」之后才开始测的基准,会系统性低估用户真实碰到的第一下。现场日志若丢掉启动期,结论会偏乐观。

边界

常驻前台、已经热过的工具(一直开着的编辑器)几乎没有首次输入问题,稳态才是主战场。广告 SDK、自动播放视频会把「启动期」拉得很长,首次输入窗口可能持续几十秒,分段边界要按产品改。游戏在 loading 之后才开放输入,loading 本身不是首次输入延迟,不要把加载时长写进这一指标。自动化测试若每次都先点一遍「唤醒」,测到的全是稳态。

怎么落地

  • 指标拆成两列:冷启动后的第一次输入,以及互动一分钟后的连续输入。两列都过线才算过。
  • 启动期尽量不挡住输入:骨架可点、首屏先可滚,把非关键脚本推迟到第一次交互之后。
  • 实验室不要在点了三下「热身」之后才开始计时。
  • 验证:卸载后重装(或清缓存)打开,立刻点主按钮,记下第一下。再用一分钟后的第十下对比。只报后面那一下的产品,会把用户每天真正碰到的第一下藏起来。

延伸

  • 同组I1.04.1 拖动跟随的延迟阈值远低于点击响应 · I1.04.2 延迟被感知为界面沉重
  • 相邻I1.07 首次响应与后续响应 · I1.05 延迟抖动
  • 站内检索first input delay · steady-state latency · Interaction to Next Paint

同组卡片

快捷操作

分享

分享当前页面

ios_share

https://hci.top/zh/handbook/I1.04.3