《浏览器原理》学习笔记Day74

递归冰川
• 阅读 156

⻚面性能工具:如何使用Performance?

通常,使用Performance需要分三步走:
第一步是配置Performance;
第二步是生成报告⻚;
第三步就是人工分析报告⻚,并找出⻚面的性能瓶颈。

配置 Performance

《浏览器原理》学习笔记Day74

上图就是 Performance 的配置⻚,观察图中区域 1,我们可以设置该区域中的“Network”来限制网络加载速度,设置“CPU”来限制 CPU 的运算速度。通过设置,我们就可以在Chrome 浏览器上来模拟手机等性能不高的设备了。在这里我将 CPU 的运算能力降低到了1/6,将网络的加载速度设置为“快的 3G(Fast 3G)”用来模拟 3G 的网络状态。
不同于 Audits 只能监控加载阶段的性能数据,Performance 还可以监控交互阶段的性能数
据。
Performance两个录制阶段:
当你录制加载阶段的性能数据时,Performance 会重新刷新⻚面,并等到⻚面完全渲染出来后,Performance 就会自动停止录制。
如果你是录制交互阶段的性能时,那么需要手动停止录制过程。

认识报告页

《浏览器原理》学习笔记Day74

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

  1. 概览面板
    引入了时间线,Performance 就会将几个关键指标,诸如⻚面帧速 (FPS)、CPU 资源消耗、网络请求流量、V8 内存使用量 (堆内存) 等,按照时间顺序做成图表的形式展现出来,这就是概览面板,你可以参看上图。
    如果 FPS 图表上出现了红色块,那么就表示红色块附近渲染出一帧所需时间过久,帧的
    渲染时间过久,就有可能导致⻚面卡顿。
    如果 CPU 图形占用面积太大,表示 CPU 使用率就越高,那么就有可能因为某个
    JavaScript 占用太多的主线程时间,从而影响其他任务的执行。
    如果 V8 的内存使用量一直在增加,就有可能是某种原因导致了内存泄漏。
  2. 性能面板
    在性能面板中,记录了非常多的性能指标项,比如 Main 指标记录渲染主线程的任务执行过程,Compositor 指标记录了合成线程的任务执行过程,GPU指标记录了 GPU 进程主线程的任务执行过程。有了这些详细的性能数据,就可以帮助我们轻松地定位到⻚面的性能问题。
  3. 解读性能面板的各项指标
    要了解各种性能指标数据,需要掌握渲染流水线、浏览器进程架构、导航流程等数据。
    渲染流水线主要是在渲染进程中执行的,在执行渲染流水线的过程中,渲染进程又需要网络进程、浏览器进程、GPU 等进程配合,才能完成如此复杂的任务。另外在渲染进程内部,又有很多线程来相互配合。具体的工作方式你可以参考下图:

《浏览器原理》学习笔记Day74

分析性能面板

《浏览器原理》学习笔记Day74

Main 指标,它记录了渲染进程的主线程的任务执行记录

《浏览器原理》学习笔记Day74

其他指标:

  • 第一个是 Network 指标,网络记录展示了⻚面中的每个网络请求所消耗的时⻓,并以瀑布流的形式展现。
  • 第二个是Timings指标
  • 第三个是 Frames 指标
  • 第四个是 Interactions 指标
  • 详情面板

《浏览器原理》学习笔记Day74

由于详情面板所涉及的内容很多,而且每种指标的详细内容都有所不同,所以本节我就不展
开来讲了。另外你可以去 Google 的官方网站查看 Performance 的一些基础使用信息

此文章为5月Day6学习笔记,内容来源于极客时间《浏览器原理》,学习使我快乐,每天进步一点点💪💪
点赞
收藏
评论区
推荐文章
blmius blmius
4年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
美凌格栋栋酱 美凌格栋栋酱
7个月前
Oracle 分组与拼接字符串同时使用
SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(
Wesley13 Wesley13
3年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
Stella981 Stella981
3年前
SpringBoot整合Redis乱码原因及解决方案
问题描述:springboot使用springdataredis存储数据时乱码rediskey/value出现\\xAC\\xED\\x00\\x05t\\x00\\x05问题分析:查看RedisTemplate类!(https://oscimg.oschina.net/oscnet/0a85565fa
Easter79 Easter79
3年前
Twitter的分布式自增ID算法snowflake (Java版)
概述分布式系统中,有一些需要使用全局唯一ID的场景,这种时候为了防止ID冲突可以使用36位的UUID,但是UUID有一些缺点,首先他相对比较长,另外UUID一般是无序的。有些时候我们希望能使用一种简单一些的ID,并且希望ID能够按照时间有序生成。而twitter的snowflake解决了这种需求,最初Twitter把存储系统从MySQL迁移
Wesley13 Wesley13
3年前
mysql设置时区
mysql设置时区mysql\_query("SETtime\_zone'8:00'")ordie('时区设置失败,请联系管理员!');中国在东8区所以加8方法二:selectcount(user\_id)asdevice,CONVERT\_TZ(FROM\_UNIXTIME(reg\_time),'08:00','0
Stella981 Stella981
3年前
Redis 的监控指标有哪些?别说你不知道!
监控指标•性能指标:Performance•内存指标:Memory•基本活动指标:Basicactivity•持久性指标:Persistence•错误指标:Error性能指标:Performance!(https://oscimg.oschina.net/oscnet/upd536aa6949457e7
Easter79 Easter79
3年前
SpringBoot整合Redis乱码原因及解决方案
问题描述:springboot使用springdataredis存储数据时乱码rediskey/value出现\\xAC\\xED\\x00\\x05t\\x00\\x05问题分析:查看RedisTemplate类!(https://oscimg.oschina.net/oscnet/0a85565fa
Wesley13 Wesley13
3年前
valgrind及graphviz分析c++性能瓶颈
使用valgrind进行性能分析,过程如下:\\\@Ubuntu(http://my.oschina.net/u/555627):~/Performance$valgrindtoolcallgrind./mt\7389Callgrind,acallgraphgeneratingcachepro
Compare IPQ9574 - IPQ6010: Performance, frequency bands, and long-range communication capabilities
CompareIPQ9574andIPQ6010:Performance,frequencybands,andlongrangecommunicationcapabilitiesWhenitcomestotheIPQ9574andIPQ6010chips,