首页 > 其他分享 >页面性能工具:如何使用Performance

页面性能工具:如何使用Performance

时间:2024-01-10 23:33:40浏览次数:41  
标签:记录 性能 渲染 概览 指标 Performance 面板 页面

我们在 Chrome 中任意打开一个站点,再打开 Chrome 开发者工具,然后选择 Performance 标签,最终效果如下图所示:

页面性能工具:如何使用Performance_web性能工具

不同于 Audits 只能监控加载阶段的性能数据,Performance 还可以监控交互阶段的性能数据,不过 Performance 是分别录制这两个阶段的,我们可以看到这里有两个按钮,上面那是用来记录交互阶段性能数据的,下面那个带箭头的圆圈形按钮用来记录加载阶段的性能数据。

另外你还要注意一点,这两种录制方式稍微有点不同:

  • 当你录制加载阶段的性能数据时,Performance 会重新刷新页面,并等到页面完全渲染出来后,Performance 就会自动停止录制。
  • 如果你是录制交互阶段的性能时,那么需要手动停止录制过程。

无论采用哪种方式录制,最终所生成的报告页都是一样的,如下图所示:

页面性能工具:如何使用Performance_web性能工具_02

观察上图的报告页,我们可以将它分为三个主要的部分,分别为概览面板、性能指标面板和详情面板。

要熟练掌握这三个面板,我们需要先明白时间线的概念,这是因为概览面板和性能指标面板都依赖于时间线。我们知道,Performance 按照时间的顺序来记录每个时间节点的性能数据,然后再按照时间顺序来展示这些性能数据,那么展示的时候就必然要引入时间线了。比如上图中我们录制了 10000 毫秒,那么它的时间线长度也就是 10000 毫秒,体现在上图中就是概览面板最上面那条线。

1、概览面板

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

有了概览面板,我们就能一览几个关键的历史数据指标,进而能快速定位到可能存在问题的时间节点。那么如何定位可能存在问题的时间节点呢?

  • 如果 FPS 图表上出现了红色块,那么就表示红色块附近渲染出一帧所需时间过久,帧的渲染时间过久,就有可能导致页面卡顿。
  • 如果 CPU 图形占用面积太大,表示 CPU 使用率就越高,那么就有可能因为某个 JavaScript 占用太多的主线程时间,从而影响其他任务的执行。
  • 如果 V8 的内存使用量一直在增加,就有可能是某种原因导致了内存泄漏。

除了以上指标以外,概览面板还展示加载过程中的几个关键时间节点,如 FP、LCP、DOMContentLoaded、Onload 等事件产生的时间点。这些关键时间点体现在了几条不同颜色的竖线上。

2、性能面板

我们通过概览面板来定位问题的时间节点,然后再使用性能面板分析该时间节点内的性能数据。具体地讲,比如概览面板中的 FPS 图表中出现了红色块,那么我们点击该红色块,性能面板就定位到该红色块的时间节点内了,你可以参考下图:

页面性能工具:如何使用Performance_web性能工具_03

观察上图,我们发现性能面板的最上方也有一段时间线,比如上面这个时间线所展示的是从 360 毫秒到 480 毫秒,这段时间就是我们所定位到的时间节点,下面所展示的 Network、Main 等都是该时间节点内的详细数据。

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

现在我们了解性能面板,它主要用来展现特定时间段内的多种性能指标数据。那么要分析这些指标数据,我们就要明白这些指标数据的含义,不过要弄明白它们却并非易事,因为要很好地理解它们,你需要掌握渲染流水线、浏览器进程架构、导航流程等知识点。

来分析下性能面板各个指标项的具体含义。你可以参考下图:

页面性能工具:如何使用Performance_web性能工具_04

最为重要的 Main 指标,它记录了渲染进程的主线程的任务执行记录,在 Perofrmace 录制期间,在渲染主线程上执行的所有记录都可以通过 Main 指标来查看,你可以通过点击 Main 来展开主进程的任务执行记录,具体你可以观察下图:

页面性能工具:如何使用Performance_web性能工具_05

通过渲染流水线,我们知道了渲染主线程在生成层树 (LayerTree) 之后,然后根据层树生成每一层的绘制列表,我们把这个过程称为绘制 (Paint)。在绘制阶段结束之后,渲染主线程会将这些绘列表制提交 (commit)给合成线程,并由合成线程合成出来漂亮的页面。因此,监控合成线程的任务执行记录也相对比较重要,所以 Chrome 又在性能面板中引入了Compositor 指标,也就是合成线程的任务执行记录。

在性能面板上,Chrome_ChildIOThread 指标对应的就是 IO 线程的任务记录。除此之外,性能面板还添加了其他一些比较重要的性能指标。

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

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

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

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

4、详情面板

通过性能面板的分析,我们知道了性能面板记录了多种指标的数据信息,并且以图形的形式展现在性能面板上。

可以通过在性能面板中选中性能指标中的任何历史数据,然后选中记录的细节信息就会展现在详情面板中了。比如我点击了 Main 指标中的 ParserHTML 这个过程,下图就是详情面板展现该过程的详细信息。

页面性能工具:如何使用Performance_web性能工具_06


标签:记录,性能,渲染,概览,指标,Performance,面板,页面
From: https://blog.51cto.com/key3feng/9187066

相关文章

  • 《实战Java虚拟机 JVM故障诊断与性能优化》读书
    最近读了《实战Java虚拟机JVM故障诊断与性能优化》这本书,有一些收获,特此记录1.有Java虚拟机规范,各大厂商根据规范自己实现VM,大家平常用的是Hotspot2.堆一般分为新生代,老年代。新生代里又分成伊甸园区,from区,to区。一般对象是在伊甸园区出生,经过垃圾回收进入fromto老年代3.J......
  • Layui官网—表单 - 页面元素
    在一个容器中设定 class="layui-form" 来标识一个表单元素块,通过规范好的HTML结构及CSS类,来组装成各式各样的表单元素,并通过内置的 form模块 来完成各种交互。依赖加载模块:form (请注意:如果不加载form模块,select、checkbox、radio等将无法显示,并且无法使用form相关功能)小睹为快......
  • 高性能计算(HPC)的背景和简介
    前言此篇开始,逐步积累和记录HPC相关内容的点滴。高性能计算(HPC)的背景和简介什么是高性能计算高性能计算(英语:HighPerformanceComputing,缩写HPC)是指利用聚集起来的计算能力来处理标准工作站无法完成的数据密集型计算任务。集群首先是“大量高性能计算硬件堆叠而成的计算......
  • GLB 3d文件在前端页面的展示
                          GLB3d文件在前端页面的展示1. 选择方案前端实现3D效果的选项有以下四点:A. CSS3D技术;B. SVG;C. WebGL技术;D. Canvas或者图片模拟3D其中最后一种是用其他技术或方法去模拟3D效果,前3种才是浏览器真正意义上支持的3D技术。而three.j......
  • Redis 性能优化
    概述当我们操作Redis发现耗时较长时,原因可能有两个:服务间存在网络延迟Redis服务本身存在问题如果是第一种情况,那么所有服务都会发生网络延迟,只需要联系运维处理即可,这里主要讨论第二种情况Redis基准性能测试基准性能指Redis在一台负载正常的机器上的最大响应延迟和......
  • MoE模型性能还能更上一层楼?一次QLoRA微调实践
    Fine-Tuning Mixtral 8x7B with QLoRA:Enhancing Model Performance ......
  • Node.js 多线程编程:优化性能的关键步骤
    在 Node.js多线程允许Node.js应用并行处理任务,以此来提高性能和响应速度。Node.js内置了如 worker_threads 这样的模块来支持多线程。通过分配任务给不同的线程,能够更好地利用多核处理器,缓解单线程应用可能出现的瓶颈。Node.js中多线程的适用场景在 Node.js 中,以下几种情......
  • Helix QAC 2023.4 新版支持C++20语言,带来更多性能提升!
    HelixQAC2023.4新增功能HelixQAC2023.4全面支持MISRAC++:2023®规则,涵盖100%的指南。此版本还加强了对C++20语言的支持,改进了数据流分析性能,并在整个产品中增加了多项用户体验改进。增强的C++20支持此版本新增了对以下语言特性的支持:-模板参数列表和函数声明的requires-clau......
  • Helix QAC 2023.4 新版支持C++20语言,带来更多性能提升!
    HelixQAC2023.4新增功能HelixQAC2023.4全面支持MISRAC++:2023®规则,涵盖100%的指南。此版本还加强了对C++20语言的支持,改进了数据流分析性能,并在整个产品中增加了多项用户体验改进。增强的C++20支持此版本新增了对以下语言特性的支持:-模板参数列表和函数声明的require......
  • 为什么maven配置完Tomcat且运行之后页面内容没有显示出来?
    1、如何在maven项目中配置一个webapp项目?首先新建一个maven项目项目目录<?xmlversion="1.0"encoding="UTF-8"?><projectxmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"......