浏览器原理 39 # 页面性能工具:如何使用 Performance?

简介: 浏览器原理 39 # 页面性能工具:如何使用 Performance?

说明

浏览器工作原理与实践专栏学习笔记



Audits vs Performance


Performance 可以记录站点在运行过程中的性能数据,有了这些性能数据,就可以回放整个页面的执行过程,这样就方便定位和诊断每个时间段内页面的运行情况,从而有效帮助我们找出页面的性能瓶颈。


不同于 Audits,Performance 不会给出性能得分,也不会给出优化建议,它只是单纯地采集性能数据,并将采集到的数据按照时间线的方式来展现。需要我们自己依据原始数据来分析 Web 应用的性能问题。


不同于 Audits 只能监控加载阶段的性能数据,Performance 还可以监控交互阶段的性能数据。



如何使用 Performance

  1. 第一步:配置 Performance;
  2. 第二步:生成报告页;
  3. 第三步:人工分析报告页,并找出页面的性能瓶颈。



配置 Performance


打开 Chrome 开发者工具,然后选择 Performance 标签,最终效果如下图所示:

Performance 配置页:


20210628104610873.png


图中区域 1:

   Network:限制网络加载速度(设置为“Fast 3G”:用来模拟 3G 的网络状态)

   CPU:限制 CPU 的运算速度(设置为“6 x slowdown”:CPU 的运算能力降低到了 1/6)


图中区域 2 和区域 3:

   黑色按钮:用来记录交互阶段性能数据

   带箭头的圆圈形按钮:用来记录加载阶段的性能数据


这两种录制方式稍微有点不同:

   当你录制加载阶段的性能数据时,Performance 会重新刷新页面,并等到页面完全渲染出来后,Performance 就会自动停止录制。


   如果你是录制交互阶段的性能时,那么需要手动停止录制过程。



认识报告页

录制完最终所生成的报告页,Performance 的报告页:分别为概览面板、性能指标面板和详情面板。

20210628151356676.png



时间线

Performance 按照时间的顺序来记录每个时间节点的性能数据,然后再按照时间顺序来展示这些性能数据,那么展示的时候就必然要引入时间线。比如上图里就有 10000 ms 的时间线。


1. 概览面板

概览面板用来定位问题的时间节点。


引入了时间线,Performance 就会将几个关键指标,诸如页面帧速 (FPS)、CPU 资源消耗、网络请求流量、V8 内存使用量 (堆内存) 等,按照时间顺序做成图表的形式展现出来,这就是概览面板。


如何定位可能存在问题的时间节点呢?


   如果 FPS 图表上出现了红色块,那么就表示红色块附近渲染出一帧所需时间过久,帧的渲染时间过久,就有可能导致页面卡顿。


   如果 CPU 图形占用面积太大,表示 CPU 使用率就越高,那么就有可能因为某个 JavaScript 占用太多的主线程时间,从而影响其他任务的执行。


   如果 V8 的内存使用量一直在增加,就有可能是某种原因导致了内存泄漏。


概览面板还展示加载过程中的几个关键时间节点,如 FP、LCP、DOMContentLoaded、Onload 等事件产生的时间点。上图的是在竖线上体现出来。


现在版本在 Web Vitals 这里有 FCP、LCP、LS:具体可以参考:https://web.dev/vitals/


20210629113424135.png


LCP、FID、CLS

20210629113659828.png



2. 性能面板


性能面板分析该时间节点内的性能数据。


  • Main:指标记录渲染主线程的任务执行过程
  • Compositor:指标记录了合成线程的任务执行过程
  • GPU:指标记录了 GPU 进程主线程的任务执行过程。



比如:概览面板中的 FPS 图表中出现了红色块,那么我们点击该红色块,性能面板就定位到该红色块的时间节点内了,你可以参考下图:


20210706110117966.png


上面这个时间线所展示的是从 360 毫秒到 480 毫秒,这段时间就是我们所定位到的时间节点,下面所展示的 Network、Main 等都是该时间节点内的详细数据。



3. 解读性能面板的各项指标


要分析这些指标数据,就要明白这些指标数据的含义,需要掌握渲染流水线、浏览器进程架构、导航流程等知识点。


   浏览器原理 01 # Chrome架构:仅仅打开了1个页面,为什么有4个进程?

   浏览器原理 04 # 导航流程:从输入URL到页面展示,这中间发生了什么?

   浏览器原理 05 # 渲染流程:HTML、CSS和JavaScript,是如何变成页面的?


性能面板:


2021070620282217.png


3.1 Main 指标

Main 指标记录了渲染进程的主线程的任务执行记录,在 Perofrmace 录制期间,在渲染主线程上执行的所有记录都可以通过 Main 指标来查看,你可以通过点击 Main 来展开主进程的任务执行记录。


Main 指标的内容非常多,而且非常重要,所以我们在使用 Perofrmance 的时候,大部分时间都是在分析 Main 指标。下一篇会对它做详细分析。


20210706203354938.png


  • 一段段横条代表执行一个个任务,长度越长,花费的时间越多
  • 竖向代表该任务的执行记录


3.2 Compositor 指标


渲染主线程在生成层树 (LayerTree) 之后,然后根据层树生成每一层的绘制列表,我们把这个过程称为绘制 (Paint)。


在绘制阶段结束之后,渲染主线程会将这些绘列表制提交 (commit)给合成线程,并由合成线程合成出来漂亮的页面。因此,监控合成线程的任务执行记录也相对比较重要,所以 Chrome 又在性能面板中引入了Compositor 指标,也就是合成线程的任务执行记录。


3.3 Raster 指标和 GPU 指标


在合成线程执行任务的过程中,还需要 GPU 进程的配合来生成位图,我们把这个 GPU 生成位图的过程称为光栅化。


如果合成线程直接和 GPU 进程进行通信,那么势必会阻塞后面的合成任务,因此合成线程又维护了一个光栅化线程池 (Raster),用来让 GPU 执行光栅化的任务。


因为光栅化线程池和 GPU 进程中的任务执行也会影响到页面的性能,所以性能面板也添加了这两个指标,分别是 Raster 指标和 GPU 指标。


因为 Raster 是线程池,所以如果你点开 Raster 项,可以看到它维护了多个线程。


3.4 Chrome_ChildIOThread 指标


渲染进程中除了有主线程、合成线程、光栅化线程池之外,还维护了一个 IO 线程,具体细节你可以参考:浏览器原理 14 # 消息队列和事件循环


IO 线程主要用来接收用户输入事件、网络事件、设备相关等事件,如果事件需要渲染主线程来处理,那么 IO 线程还会将这些事件转发给渲染主线程。在性能面板上,Chrome_ChildIOThread 指标对应的就是 IO 线程的任务记录。


3.5 Network 指标


网络记录展示了页面中的每个网络请求所消耗的时长,并以瀑布流的形式展现。这块内容和网络面板的瀑布流类似,之所以放在性能面板中是为了方便我们和其他指标对照着分析。


3.6 Timings 指标


用来记录一些关键的时间节点在何时产生的数据信息,关于这些关键时间点的信息我们在上一节也介绍过了,诸如 FP、FCP、LCP 等。


3.7 Frames 指标


浏览器生成每帧的记录,我们知道页面所展现出来的画面都是由渲染进程一帧一帧渲染出来的,帧记录就是用来记录渲染进程生成所有帧信息,包括了渲染出每帧的时长、每帧的图层构造等信息,你可以点击对应的帧,然后在详细信息面板里面查看具体信息。


3.8 Interactions 指标


用来记录用户交互操作,比如点击鼠标、输入文字等交互信息。




4. 详情面板


性能面板记录了多种指标的数据信息,并且以图形的形式展现在性能面板上。但是我们只能得到一个大致的信息,如果想要查看这些记录的详细信息,就需要引入详情面板。


我们可以通过在性能面板中选中性能指标中的任何历史数据,然后选中记录的细节信息就会展现在详情面板中。

比如:点击 Main 指标中的 ParserHTML 这个过程,下图就是详情面板展现该过程的详细信息。


20210706212802460.png



可以参考资料:

















相关实践学习
部署Stable Diffusion玩转AI绘画(GPU云服务器)
本实验通过在ECS上从零开始部署Stable Diffusion来进行AI绘画创作,开启AIGC盲盒。
目录
相关文章
|
1月前
|
存储 缓存 监控
|
3天前
|
人工智能 前端开发 计算机视觉
Inpaint-Web:纯浏览器端实现的开源图像处理工具
在刷短视频时,常看到情侣在景区拍照被路人“抢镜”,男朋友用手机将路人“P”掉,既贴心又有趣。最近我发现了一个纯前端实现的开源项目——inpaint-web,可在浏览器端删除照片中的部分内容,非常酷。该项目基于 WebGPU 和 WASM 技术,支持图像修复与放大,已在 GitHub 上获得 5.1k Star。项目地址:[GitHub](https://github.com/lxfater/inpaint-web)。
41 3
 Inpaint-Web:纯浏览器端实现的开源图像处理工具
|
15天前
|
缓存 监控 测试技术
如何利用浏览器的缓存来优化网站性能?
【10月更文挑战第23天】通过以上多种方法合理利用浏览器缓存,可以显著提高网站的性能,减少网络请求,加快资源加载速度,提升用户的访问体验。同时,要根据网站的具体情况和资源的特点,不断优化和调整缓存策略,以适应不断变化的业务需求和用户访问模式。
59 7
|
17天前
|
Web App开发 JavaScript 前端开发
使用 Chrome 浏览器的内存分析工具来检测 JavaScript 中的内存泄漏
【10月更文挑战第25天】利用 Chrome 浏览器的内存分析工具,可以较为准确地检测 JavaScript 中的内存泄漏问题,并帮助我们找出潜在的泄漏点,以便采取相应的解决措施。
127 9
|
15天前
|
存储 缓存 网络协议
计算机网络常见面试题(二):浏览器中输入URL返回页面过程、HTTP协议特点,GET、POST的区别,Cookie与Session
计算机网络常见面试题(二):浏览器中输入URL返回页面过程、HTTP协议特点、状态码、报文格式,GET、POST的区别,DNS的解析过程、数字证书、Cookie与Session,对称加密和非对称加密
|
16天前
|
Web App开发 定位技术 iOS开发
Playwright 是一个强大的工具,用于在各种浏览器上测试应用,并模拟真实设备如手机和平板。通过配置 `playwright.devices`,可以轻松模拟不同设备的用户代理、屏幕尺寸、视口等特性。此外,Playwright 还支持模拟地理位置、区域设置、时区、权限(如通知)和配色方案,使测试更加全面和真实。例如,可以在配置文件中设置全局的区域设置和时区,然后在特定测试中进行覆盖。同时,还可以动态更改地理位置和媒体类型,以适应不同的测试需求。
Playwright 是一个强大的工具,用于在各种浏览器上测试应用,并模拟真实设备如手机和平板。通过配置 `playwright.devices`,可以轻松模拟不同设备的用户代理、屏幕尺寸、视口等特性。此外,Playwright 还支持模拟地理位置、区域设置、时区、权限(如通知)和配色方案,使测试更加全面和真实。例如,可以在配置文件中设置全局的区域设置和时区,然后在特定测试中进行覆盖。同时,还可以动态更改地理位置和媒体类型,以适应不同的测试需求。
17 1
|
17天前
|
域名解析 缓存 网络协议
浏览器中输入URL返回页面过程(超级详细)、DNS域名解析服务,TCP三次握手、四次挥手
浏览器中输入URL返回页面过程(超级详细)、DNS域名解析服务,TCP三次握手、四次挥手
|
22天前
|
Web App开发 Java
使用java操作浏览器的工具selenium-java和webdriver下载地址
【10月更文挑战第12天】Selenium-java依赖包用于自动化Web测试,版本为3.141.59。ChromeDriver和EdgeDriver分别用于控制Chrome和Edge浏览器,需确保版本与浏览器匹配。示例代码展示了如何使用Selenium-java模拟登录CSDN,包括设置驱动路径、添加Cookies和获取页面源码。
|
1月前
|
前端开发 JavaScript 异构计算
简述浏览器的渲染原理
浏览器渲染原理主要包括以下步骤:1)解析HTML文档生成DOM树;2)解析CSS生成CSSOM树;3)结合DOM与CSSOM生成渲染树;4)布局计算(回流)确定元素大小和位置;5)绘制(Paint)将节点转为图形内容;6)合成(Composite)多层图像。整个过程从文档解析到最终输出完整网页,并通过优化技术提升性能。
|
1月前
自动生成IE浏览器的xpath工具IEXPath
自动生成IE浏览器的xpath工具IEXPath
33 0

热门文章

最新文章