我正在尝试测量Chrome中交互的用户感知延迟。这是从按键到屏幕更新的时间。在此示例中,我们使用新内容重新渲染了屏幕的大部分区域。没有涉及网络延迟,我们只是更新HTML。
在下面的屏幕截图中,您可以看到Chrome DevTools按键事件,它运行了许多JavaScript,然后有一堆绘画、合成等等,然后按键事件的“响应”跨度结束。
假设水平灰线是垂直同步(是否有人知道这些线在哪里有记录?)Chrome将新渲染写入GPU并因此在屏幕上显示,那么Devtools为按键事件提供的“响应”跨度似乎是我要测量的很好的近似值,因为它测量了从按键按下到我们完成DOM突变后的第一条灰线之后的时间。
我已经尝试了各种方法来近似javascript中的时间,包括requestAnimationFrame、requestIdleCallback、带有消息传递的setImmediate polyfill以及上述几种组合。似乎它们都比纯JavaScript时间长,但它们大多低估或高估实际更新屏幕的时间。
在下面的屏幕截图中,您可以看到Chrome DevTools按键事件,它运行了许多JavaScript,然后有一堆绘画、合成等等,然后按键事件的“响应”跨度结束。
假设水平灰线是垂直同步(是否有人知道这些线在哪里有记录?)Chrome将新渲染写入GPU并因此在屏幕上显示,那么Devtools为按键事件提供的“响应”跨度似乎是我要测量的很好的近似值,因为它测量了从按键按下到我们完成DOM突变后的第一条灰线之后的时间。
我已经尝试了各种方法来近似javascript中的时间,包括requestAnimationFrame、requestIdleCallback、带有消息传递的setImmediate polyfill以及上述几种组合。似乎它们都比纯JavaScript时间长,但它们大多低估或高估实际更新屏幕的时间。
有没有更好的方法来衡量生产中的时间?Chrome DevTools指标是如何工作的?我应该完全测量其他内容吗?