关于 Chrome DevTools Performance 的使用与分析

关于 Chrome DevTools Performance 的使用与分析

Mon Jul 25

Author: huyikai

chromeDevToolsPerformance

为什么使用 Performance ?

事物的存在必然有它的原因,Performance 存在的原因是什么呢?

web 应用开发后最终是要提供给用户,用户满意开发者才能到得相应的回报。让用户满意说容易也并不容易,首先靠外在(设计、运营)去吸引眼球,再通过内在(稳定、流畅)去吸引人心。在 web 应用开发中我们将内在量化概称为性能。一个人内在是否充盈会影响 Ta 是否受欢迎,那一个 web 应用性能是否达标则会影响用户的满意度以至于影响到公司以及开发者自身的持续发展。

所以,作为开发者,即便为了自己的可持续发展,也要把 Performance 这块搞一搞。至于怎么搞,刚好 Chrome 有个调试技巧 ——devTools Performance,下面就来学习一下

准备

开始前先进行一些相关知识拓展。有助于查看后续内容时能更好的理解。

RAIL 模型

img

RAIL 模型是了解性能的基础,是一种以用户为中心的性能模型,字面意思即 1.Response 响应、2.Animation 动画、3.Idle 空闲、4.load 加载 ,代表了 Web 应用生命周期的四个方面,用户对此有不同的性能期待。这些性能期待是有目标和准则的,结合着 4 个方面,即成为我们优化性能的参考指标。所以后面的调试中,当获取了数据却无从下手时,可以参考 RAIL 模型的相关内容作为对比。判断性能是否异常,异常出现在哪里。

但是也要注意因为网络条件和硬件的不同,用户对性能延迟的感知也有所不同。最终还是要根据自身实际情况做判断,适合的才是最好的。这里不展开讨论,详情可以查看使用 RAIL 模型衡量性能

面板介绍

总体分为 4 块区域:Controls、Overview、Thread、Details

Controls 控制

image-20220725093032417

Overview 概览

image-20220725092937244

Thread 线程

image-20220725131901285

详细的分析某些任务的详细耗时,从而定位问题。

Details 详情

使用与分析

注意事项

使用

  1. 使用Google 测试页面进行测试,以无痕模式打开页面,打开 DevTools,切换至 Proformance 面板。可以看到页面中元素并不多,运行还是非常流畅的。

    animation

  2. 我们将方块数添加至 300。

image-20220722152658349

可以看到页面帧率已经下降到 19FPS,蓝色方块移动的动画肉眼可见的卡顿。

接下来我们用 DevTools Performance 记录一下页面此时运行时性能。

image-20220722153917116

分析

这个记录的结果中信息很多,通过查阅官方文档,和其他社区参考得知,通常情况下会判断以下几点关键信息

发现了问题的所在,此处代码消耗时间明显远高于其他行。

此处代码的问题在于,在每个动画帧中,它会更改蓝色方块的样式,然后查询每个方块在页面上的位置。因为样式变了,浏览器不知道每个方块的位置是否改变了,所以它必须重新布局方块来计算它的位置。

接下来我们就可以考虑如何用尽可能更好的方法去解决这个问题。关于相关优化,这里不展开讨论。可以查看避免强制同步布局来了解相关优化信息。

总结

以上根据 google 示例的一个调试来了解 performance 的大概使用和信息关键点的分析。实际生产中,问题可能不同,但是只要按照思路针对问题表现去抽丝剥茧,总能调查根本原因,然后逐一调查并处理,直到修改到符合期望。

示例的性能问题是由于回流导致的,影响性能的原因不限于此,还可能有多种多样的问题,例如 long task 带来的阻塞等。好的工具会帮助你提升效率,但是最重要的还是要拥有一个好的开发习惯以及增强自身的总体技术水平,尽量在源头上减少甚至避免问题的出现。

其他

我们在打开 DevTools 的时候会发现除了 Performance,还有一个名称类似的 Performance Insights 。

这是一个于 102 版本发布的实验功能,目的在于解决使用 Performance 时的以 3 个痛点:

详情可以查阅 性能洞察:获取有关你网站性能的可操作洞察