这篇文章Google开发者中DevTools[1]文档Performance部分的英文译文,如有翻译不对的地方,希望大家指出
原文:developers.google.com/web/tools/c…
作者: Kayce Basques
译者: Timwk
注:未经许可,请勿转载
「注:可以查看优化网站速度以了解如何使您的页面加载速度更快。」
运行性能(Runtime performance)是页面运行(而不是加载)时的性能。 本教程将教您如何使用“Chrome DevTools”的性能选项卡(performance)来分析运行性能。 在RAIL(response, animation, idle, load)模型方面,您在本教程中学习的技能对于分析页面的响应,动画和空闲阶段很有用。
在本次教程中,你在页面中打开 「DevTools」,并使用「Performance」 选项卡来查找页面的性能瓶颈
DevTools
,效果如下图:
ˆ
「图1」 页面在左边,DevTools在右边与台式电脑和笔记本相比,移动设备的CPU的性能要低很多。所以当你分析页面,一般使用CPU限制来模拟页面在移动设备上的表现;
因为很难创建一个使所有用户都表现一致的运行性能演示页面[2]。接下来你需要自定义演示,以确保在你的条件下,你的体验与本教程中看到的屏幕截图和说明相对一致;
单击“Add 10” 按钮,知道蓝色方块的移动速度明显比初始时慢。在性能好的计算机上,可能需要约20次的点击
单击“Optimize”(优化)按钮,蓝色方块能移动得更快更稳
当您运行页面的优化版本时,蓝色方块移动得更快。 这是为什么? 两种版本都应在相同的时间内将每个正方形移动相同的空间。 在「performance」选项卡中进行录制,可以了解如何检测未优化版本中的性能瓶颈。
「图3」:页面分析
wow, 这是数据量也太大了吧。但不用担心,接下来你就会知道这些数据的含义的;
记录了页面的性能后,就可以衡量页面的性能有多差,并找出原因。
衡量动画性能的主要指标是每秒帧数(FPS)。 当动画以60 FPS运行时,用户看着是流畅的[3]。
查看「FPS」表,如果你在图标的上方看到红色条,则表示页面帧数很低,会影响用户的使用体验(译者:会让用户觉得有卡顿出现) 「图5」:蓝框标识的是 FPS 图表
在 FPS 图表下方,你会看到CPU图标。CPU图表中的颜色与「Performance」选项卡底部的「Summary」选项卡的颜色对应。CPU图表中,颜色填充的高度越高则表示使用CPU的资源越多。当你看到CPU长时间处于满负荷的状态,就需要寻找减少使用CPU的方法; ˆ
「图6」:蓝框标识CPU图标和「Summary」选项卡
将鼠标悬停在FPS,CPU或NET图表上。 「DevTools」将显示该时间点的页面截图。 左右移动鼠标以显示记录。 这称为 scrubbing(译者:这里暂时没找到合适的翻译),对于手动分析动画的播放很有用。 「图7」:查看记录中约2000ms处页面的屏幕截图
在“Frames”(帧)部分,将鼠标悬停在某个绿色的方块上,「DevTools」 会显示特定帧的FPS,帧数可能远远达不到 60 FPS 的目标;
「图8」:悬停在帧上
在这个演示上,我们能很明显的看出页面效果不好。但在实际情况中,可能不会很明显,因此使用这些工具能很方便的进行检测。
另一个方便的工具是FPS测量仪,它可以在页面运行时提供FPS的实时估算。
「图9」:FPS 面板
现在,您已经测量并验证了动画效果不佳,接下来要回答的问题是:为什么?
「图10」:蓝色框是「Summary」选项卡
「图11」:蓝色框是“Main”块
Animation Frame Fired
事件Animation Frame Fired
事件时,「Summary」选项卡会显示该事件的相关信息。注意reveal
链接,点击链接, 「DevTools」会突出显示启动该Animation Frame Fired
事件的事件。同时还要注意app.js:94
链接,点击会跳到源代码中的相关行。「图12」:关于Animation Frame Fired
事件的更多消息
在app.update
事件下方,有一堆紫色事件。如果将其放宽,会看到几乎每个紫色事件上都有一个红色三角形。现在单击其中一个紫色的Layout
事件。查看「DevTools」中的「Summary」选项卡提供的信息,会发现确实存在强制重排(reflows)的警告(也就是强制布局的警告)
在「Summary」选项卡中,单击Layout Forced
下的app.js:70
链接,「DevTools」会切换到触发强制布局的代码行
「图13」:触发强制布局的代码行
做得很好,所以花费了一些时间,但是现在你已经有分析运行性能的坚实基础了。
单击演示页面上的Optimize
按钮,启动优化了代码的版本,然后使用刚学习的流程和工具进行性能记录,然后分析结果。从改进的帧率到“Main”块火焰图中事件的减少,你看到优化版本的应用做了更少的工作,从而获得更好的性能;
RAIL模型是了解性能的基础。该模型告诉你,对用户而言,哪些是最重要的性能指标。有关更多信息,请查看Measure performance with the RAIL model
更多的实践能让你对「Performance」选项卡更加的熟悉。请尝试对你自己的页面进行分析,并分析结果。如果你对你的结果有任何疑问,可以在Stack Overflow发布一个标有google-chrome-devtools
标签的问题。如果可以,请附上屏幕截图或指向可复制页面的链接
要真正掌握运行时性能,你必须学习浏览器如何将HTML、CSS和JS转换为屏幕上像素点。可以从 Rendering Performance Overview开始学习。The Anatomy Of A Frame这篇文章深入讨论了更多细节。
最后,有许多方法可以改善运行时性能。 本教程重点介绍了一个特定的动画瓶颈,以使您可以重点关注「Performance」面板,但这只是您可能遇到的许多瓶颈之一。 渲染性能系列的其余部分提供了许多改善运行时性能各个方面的好技巧,例如:
Devtools是什么: chrome的开发者工具,由几个选项卡工具组成。
[2]无法得到表现一致的演示(译者注): 因为用户的设备配置和performance选项版配置的不同。
[3]为什么是60 FPS: 与人眼识别有关系
本文使用 mdnice 排版