性能工具之前端分析工Chrome Developer Tools性能标签

news2024/10/7 4:33:17

文章目录

    • 一、前言
    • 二、第一部分
    • 三、第二部分
    • 四、第三部分
    • 五、第四部分
    • 六、小结

一、前言

之前本博曾经写过几篇和前端性能分析相关的文章,如下:

  • 常见性能工具一览
  • 性能工具之常见压力工具是否能模拟前端?
  • 性能工具之前端分析工Chrome Developer tools性能标签

首先这些文章还不够成体系,其次也不够有深度。这一点后面我们要尽量补齐,其实还是和思维逻辑有关。
但在我参与过的性能相关的场合都会被问到前端性能如何分析。
虽然在项目中,我们会经常做前端性能分析动作,也会给出相应的结论,只是这些在性能瓶颈的问题中所占的比重仍然不高。其原因是压力工具都是大部分模拟接口的。
虽然在性能工具中,也会模拟前端资源的下载动作,但对浏览器下载了资源之后的渲染过程仍然是无法模拟的。这一点在《 性能工具之常见压力工具是否能模拟前端?中也有描述。

所以后面我们会增加这方面的文章,以完善RESAR性能工程逻辑。

在前端性能分析中,各浏览器都给出了相应的工具,这一点在 常见性能工具一览 中也描述过。
本文就再细化一些描述下去。我们从 Chrome Developer Tools 的性能标签说起。

先来看一下这个界面。在 chrome 浏览器中,打开 view - Developer - Developer Tools,选择 performance 标签,就会出现这个界面。
在这里插入图片描述
这个界面是针对当前所在的浏览器 tab 页生效的,关闭了 tab 页,这个界面也会跟着关闭。

下面我们一一解释一下这里面的内容。

二、第一部分

在这里插入图片描述
在 performance 界面的第一部分,最上面的是时间线。
时间线下面依次是FPS、CPU、NET、HEAP。

  • FPS:frame per second,每秒帧数。这部分和页面的动画性能相关,如果出现了红色的长条,说明这部分有卡帧的情况,需要进行优化。而绿色的长条说明性能好,绿色的长条越长说明性能越好。
  • CPU:显示了加载的过程中,各个阶段对 CPU 的消耗,占的时间越多则是越要被优化的部分。其中不同的颜色对应着不同的部分。颜色的含义是:
    • 蓝色(Loading):代表网络通信和 html 解析消耗的CPU。
    • 黄色(Scripting):代表 JavaScript 执行消耗的CPU。
    • 紫色(Rendering):代表样式计算、布局、css的解析消耗的CPU。
    • 绿色(Painting):代表绘图消耗的 CPU。
    • 灰色(System):代表系统等其他事件消耗的 CPU。
    • 白色(Idle):代表空闲时间所消耗的驼背。
  • NET:代表了请求的顺序以及花费的时间。颜色越深,优先级越高。它对应着第二部分中的 network 中的数据,在第二部分中可以查看更具体的顺序和耗时。
  • HEAP:代表JS堆内存大小。

了解这些内容之后,在分析时就要多观察哪部分颜色占的比重大。CPU 也会对应着 performance 界面的下面部分,在第二部分中有更细的数据。我们后面会再描述。

三、第二部分

在这里插入图片描述
这部分数据较多,最上面仍然是时间线。在这里有不同颜色的虚线。含义如下:

  • 蓝色:DOM加载完的时间点。
  • 绿色:绘制开始的时间点。
  • 红色:页面加载完成的时间点。

各线程的工作内容和时间线也有详细的描述。

Network:下面 network 部分对应着第一部分中的 NET 部分。展开之后,可以看到更细的数据。如下:
在这里插入图片描述
页面中的每一个资源,都对应着顺序和花费的时间长短,放大缩小时间线时,都会有对应的变动。

Frames:在这一部分中,可以显示一个页面的各重要的时间点。
在这里插入图片描述

各简写如下:

  • FP (First Paint) 首次绘制
  • FCP (First Contentful Paint) 首次内容绘制
  • LCP (Largest Contentful Paint) 最大内容渲染
  • DCL (DomContentloaded)DOM加载解析完成
  • FMP(First Meaningful Paint) 首次有效绘制
  • L (onLoad)依赖资源全部加载
  • TTI (Time to Interactive) 可交互时间
  • TBT (Total Blocking Time) 页面阻塞总时长
  • FID (First Input Delay) 首次输入延迟
  • CLS (Cumulative Layout Shift) 累积布局偏移
  • SI (Speed Index)显示页面速度

Main:这部分就重要了,有个倒立的火焰图。
在这里插入图片描述
图的上面时间包含下面的时间。要看懂这个倒也不复杂,只要写过代码的就可以理解,父调用时间会有两个部分:自身时间和子调用时间。还有一点重要的是,倒立火焰图越平坦,则消耗时间越长,如果都是尖尖的样子,同时父调用的时间又长,则是因为子调用过多,需要优化掉子调用。

其他线程:
在这里插入图片描述
要了解这一部分,建议去看看 Blink 的架构。对于我们做性能分析的来说,主要看各线程的工作时间即可。

四、第三部分

在这里插入图片描述
对应js堆内存、文档、节点、监听器和GPU趋势图。
显然是越高性能越差。

五、第四部分

在这里插入图片描述
这部分给出了摘要图和树状图,可以看到每个函数消耗的时间,以及函数所在代码的行号。可以直接点击并跳转到相应的行号上,以便定位。

六、小结

以上就是 Chrome 开发者工具中的 Performance 页面的所有内容。这些内容对我们分析前端的性能有很大的帮助。

但前端的性能不止在这个页面中得到体现 ,还有更多的工具可以参照。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/20037.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Pytorch with fastai】第 19 章 :从零开始的 fastai 学习者

🔎大家好,我是Sonhhxg_柒,希望你看完之后,能对你有所帮助,不足请指正!共同学习交流🔎 📝个人主页-Sonhhxg_柒的博客_CSDN博客 📃 🎁欢迎各位→点赞…

AutoDWG 文件属性编辑修改控件/Attribute Modifier-X

AutoDWG 文件属性编辑修改控件组件/AttributeX 控件组件 属性控件组件是开发者无需AutoCAD就可以直接在dwg文件中提取或修改属性值的组件。 主要特征: 从 dwg 文件中提取属性值。 直接在dwg文件中添加或修改属性值。 支持 R9 到 2016 版本的 DWG 和 DXF。 独立于 A…

如何学习Python技术?自学Python需要多久?

前言 Python要学习的时间取决于学习方式:自学至少需要学8个月;报班的话,可能需要4个月左右的时间。如果想具体了解Python要学多久,那不妨接着往下看吧! (文末送读者福利) 这个问题分为两种情况,分为自学和…

机械设计基础总复习

《机械设计基础》 一、简答题 1. 机构与机器的特征有何不同? 机器的特征:(1)人为机件的组合;(2)有确定的运动;(3)能够进行能量转换或代替人的劳动。 机构…

攻防世界Encode

Encode 题目描述:套娃? 题目环境:https://download.csdn.net/download/m0_59188912/87094879 打开timu.txt文件,猜测是rot13加密。 Rot13在线解码网址:https://www.jisuan.mobi/puzzm6z1B1HH6yXW.html 解密得到&#x…

跟艾文学编程《Python基础》(1)Python 基础入门

作者: 艾文,计算机硕士学位,企业内训讲师和金牌面试官,现就职BAT一线大厂公司资深算法专家。 邮箱: 1121025745qq.com 博客:https://wenjie.blog.csdn.net/ 内容:跟艾文学编程《Python基础入门》…

专题18:Django之Form,ModelForm

原始思路实现添加用户功能的缺点: 1)用户提交的数据没有校验 2)如果用户输入的数据有错误,没有错误提示 3)前端页面上的每一个字段都需要我们重新写一次 4)关联的数据需要手动取获取并循环展示在页面 1…

【Effective_Objective-C_1熟悉Objective_C】

文章目录说在前面的熟悉ObjectiveCfirst了解Objective-C的起源1.消息结构和函数调用运行期组件内存管理Objective-C的起源要点总结Second 在类的头文件尽量少饮入其他文件尽量延后引入头文件或者单独开辟一个文件向前声明在类的头文件尽量少饮入其他文件要点总结THIRD-多用字面…

梯度下降法的理解

1 梯度下降法 本文所有的数学定义概念非官方所给,皆来自于个人理解融合 1.1 梯度的定义 个人理解就是能够使函数值增大最快的方向 需要明确的一点,这里说的方向都是自变量变化的方向 1.2 梯度下降法 梯度下降法本质上是用来求解目标函数最小值的一种…

CocosCreater学习1

1.产品定位 Cocos Creator 是以内容创作为核心,实现了脚本化、组件化和数据驱动的游戏开发工具。具备了易于上手的内容生产工作流,以及功能强大的开发者工具套件,可用于实现游戏逻辑和高性能游戏效果。 2.工作流程 3.项目文件夹结构 初次创…

C++入门基础01:指针与引用

C入门基础&#xff1a;指针与引用 指针 #include <iostream> //系统定义头文件一般是尖括号 #include<fstream> #include<string> using namespace std;//引用与指针 //是复合数据类型&#xff0c;与基本数据类型int、double这类是不一样的 //指针存储的是…

Java集合框架详解(一)Collection接口、List接口、ArrayList类、Vector类

一、集合架构图 二、Collection接口 Collection集合的遍历 迭代器&#xff1a;Iterater 方法名称备注Iterater Iterater()返回在此collection的元素上进行迭代的迭代器boolean hasNext()如果有元素可以迭代&#xff0c;返回true&#xff0c;否则返回falseE next()返回迭代的下…

Kafka - Kafka生产者|发送消息|分区策略|提高吞吐量|数据可靠性|数据去重|数据有序

文章目录1. Kafka 生产者2. 生产者发送消息1. 生产者异步发送消息2. 生产者异步发送消息带回调函数3. 生产者同步发送消息3. 生产者发送消息的分区策略1. Kafka 分区好处2. 分区器 DefaultPartitioner 和 ProducerRecord 源码3. 指定 partition 的情况4. 没有指定 partition 但…

从零集成mybatis-plus

Mybatis-Plus特性&#xff1a; 无侵入&#xff0c;即引入它不会对现有工程产生影响。损耗小&#xff0c;启动就会自动注入基本的CRUD&#xff0c;内置通用Mapper、Service等&#xff0c;基本能满足大部分需求。支持主键自动生成&#xff0c;其中包括分布式唯一ID生成器Sequenc…

PTA题目 分段计算居民水费

为鼓励居民节约用水&#xff0c;自来水公司采取按用水量阶梯式计价的办法&#xff0c;居民应交水费y&#xff08;元&#xff09;与月用水量x&#xff08;吨&#xff09;相关&#xff1a;当x不超过15吨时&#xff0c;y4x/3&#xff1b;超过后&#xff0c;y2.5x−17.5。请编写程序…

[附源码]java毕业设计时事资讯平台

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

黑*头条_第1章_项目介绍和工程搭建

黑*头条_第1章_项目介绍和工程搭建 文章目录黑*头条_第1章_项目介绍和工程搭建学习目标1. 项目介绍1.1项目背景1.2 项目概述1.3 项目术语定义2. 项目需求2.1 APP主要功能大纲2.2 APP用例图&#xff08;主要功能&#xff09;2.3 WEMEDIA功能大纲2.4 WEMEDIA用例图&#xff08;主…

STM32嵌入式工程师自我修养

STM32嵌入式工程师自我修养一、STM32必备技能二、程序员必须熟知三、学习STM32自备资料和硬件一、STM32必备技能 1、熟悉 C 语言编程&#xff0c;熟练 STM32CUBEMX,Keil 开发环境。 2、熟悉基于STM32 MCU开发&#xff0c;掌GPIO,TIME,PWM,ADC等外设开发。 3、熟悉USART,IIC,SP…

快速熟悉C++之常用语法

函数重载&#xff08;Overload&#xff09; 规则 函数名相同 参数个数不同、参数类型不同、参数顺序不同 ◼ 注意 返回值类型与函数重载无关 调用函数时&#xff0c;实参的隐式类型转换可能会产生二义性 ◼ 本质 采用了name mangling或者叫name decoration技术 ✓…

Java锁对象

Java锁 1. 对象头 1.1 简介 以32位的 JVM 为例&#xff0c;每个Java对象的对象头都包含了如下信息 # 组成 Mark Word: 锁的信息&#xff0c;hashcode&#xff0c;垃圾回收器标志 Klass Word: 指针&#xff0c;包含当前对象的Class对象的地址&#xff0c;类对象来确…