性能优化的目的

我们每一次的UI的变化,都要经历以下步骤:

我们都知道像素管道有五步,JavaScript->样式计算->布局->绘制->合成

人的眼睛大约每秒可以看到 60 帧,那么就代表我们每 16.7ms 就要看到 1 帧,一帧就要经历上图的 5 步,说明我们的每一个任务(task) 不宜过长,这样就会导致用户对于界面感知的不友好性

  • fps 是指页面每秒帧数

  • fps = 60 性能极佳

  • fps < 24 会让用户感觉到卡顿,因为人眼的识别主要是24帧

根据谷歌统计的数据,用户在不同时间段内接收到的反馈,可能直接影响到对于网站的用户留存,如下图:

在这里我们不深入讲对于这方面的一些细节,这篇文章主要是给大家讲一下,如果做任务切片,如何优化界面的渲染速度和响应速度.

什么是chrome性能分析模板?

性能你都去哪儿了?俗话说知己知彼百战不殆,我们要了解性能是怎么分配的,才能做好性能优化塞,性能分析模板告诉你答案!

从加载,脚本,渲染,paint(绘制)其他,空闲,通过这种饼状图方式,我们对性能一目了然。

为何要上手该面板?

不用白不用。

开始学习

进入隐身模式 ctrl+shift+N

打开 performance 选项卡

点击图中的齿轮,为了模拟移动端,我们根据电脑性能选择相应的cpu节流。

打开截图功能

此外如果还勾选了memory根据变化还可以看到大致的垃圾回收周期,以及有无明显的内存泄露。

准备完毕,真刀真枪干。

我们先获取优化前的各种数据分析:先点击左上角 record 圆点记录优化前版本的运行时性能,过一段时间之后点击停止。圆点旁边的刷新样的标志(大佬叫圆形箭头,hhh)是用于 loading 的性能分析的按钮。

参观一下性能分析面板

图片的右边标有:FPS;CPU;NET

  1. (Analyze frames per second)帧率,FPS

红色横条表示帧率过低已经影响了用户体验,通常情况下绿条越高,帧率越高,体验越好.当帧率不影响使用的时候横条是不会出现的

cpu对应下方summary的饼图,哪块大,哪块对应的cpu消耗也就越大。

从本图中不难看出花在页面渲染的cpu消耗是最多的。

在FPS,CPU,NET上 左右移动鼠标,就可以看到各个时间点的截图,这在分析动画执行的各个阶段,以及了loading的各个阶段的时候尤其有用.

图片左边的部分:

  1. 如果记录期间包含网络请求那么在 frame 上面还有一栏 Network,会用不同的颜色表示请求不同的资源

  2. frames区域,鼠标点上去会显示当前的帧率

  1. 在记录过程中按快捷键cmd + shift + p 然后输入 show rendering (打开实时查看帧率的面板),可以看到实时的帧率变化

  2. main 代表主线程, 一段横条代表执行一个事件(函数),长度越长,花费的时间越多; 竖向代表调用栈.如果在这些横条中右上角是红色的就表示在该段代码执行过程中可能存在性能问题.

  1. 我们可以看到上图中很多黄色横条的右上角是红色的,点击展开 main中的 这一部分: 点击 animation frame fired 事件,可以在下面看到相关信息. 并且可以定位到 source 面板中的相关代码.根据定位到的代码段,阅读代码我们可以发现,问题是出在选中的蓝色背景的这句代码中

具体出了什么问题,不做讨论。[重绘与重排][Link 2]也可以看看谷歌官方文档

最后补充一下和summory tab同级的几个tab

  1. Bottom-Up,展示浏览器执行的各个操作说占用的时间

  • 在 Timeline 中选取一段时间,然后点击 Bottom-Up得到上图,图片中展示浏览器执行的各个操作说占用的时间

  1. Call Tree,表示浏览器的基本操作(事件执行,绘制...)所占用的时间

  • 同理点击Call Tree 得到上图: 表示浏览器的基本操作(事件执行,绘制...)所占用的时间

  1. Event Log,可以按照选中时间内事件发生的顺序来查看事件执行所占用的时间.

同理点击 Event Log得到上图: 可以按照选中时间内事件发生的顺序来查看事件执行所占用的时间.

最后

如果你觉得这篇内容对你挺有启发,我想邀请你帮我三个小忙:

  1. 点个「在看」,让更多的人也能看到这篇内容(喜欢不点在看,都是耍流氓 -_-)

  2. 欢迎加我微信「qianyu443033099」拉你进技术群,长期交流学习...

  3. 关注公众号「前端下午茶」,持续为你推送精选好文,也可以加我为好友,随时聊骚。

点个在看支持我吧,转发就更好了

手把手教你看懂Chrome火焰图!(调试性能必备)相关推荐

  1. ali arthas 火焰图_手把手教你看懂Chrome火焰图!(调试性能必备)

    性能优化的目的 我们每一次的UI的变化,都要经历以下步骤: 我们都知道像素管道有五步,JavaScript->样式计算->布局->绘制->合成. 人的眼睛大约每秒可以看到 60 ...

  2. 手把手教你看懂并理解Arduino PID控制库——调参改变

    2019独角兽企业重金招聘Python工程师标准>>> 引子 本文将分析<手把手教你看懂并理解Arduino PID控制库>中第三个问题:PID控制参数突变对系统的影响. ...

  3. 手把手教你看懂电脑硬件测试软件CPU-Z(二)

    建议请先看手把手教你看懂电脑硬件测试软件CPU-Z(一)~ 上一次给大家介绍了CPU-Z处理器界面的各参数含义,现在再回顾这张图,想必大家都不会陌生了. 这里简单总结下这台电脑的大致情况:这是一台笔记 ...

  4. 【朝花夕拾】Android自定义View之(一)手把手教你看懂View绘制流程——向源码要答案

    前言 原文:Android自定义View之(一)手把手教你看懂View绘制流程--向源码要答案 View作为整个app的颜值担当,在Android体系中占有重要的地位.深入理解Android View ...

  5. 教你看懂卫星场强图,更好入门烧星

    为了让更多的卫视爱好者能够很快加入星友的队伍,培养卫视新人,特发此贴.  看到很多星友在发问,怎样看懂场强图,一时半会儿也说不清楚,你看看此贴就知道了. ①各卫星参数,请参考地址www.cnsat.n ...

  6. 斯坦福首席人工智能科学家:如何教计算机看懂一张图?

    导读:一位三岁的小女孩对于这个世界也许还有很多东西要学习,但是在一个重要的任务上她已经是专家了:那就是理解并描述她所看到的东西.尽管我们目前的科技取得了前所未有的进步,但是,哪怕最先进的机器和电脑,依 ...

  7. 手把手教你看懂自然语言处理-NLP(4个典型应用+5个难点+6个实现步骤)

    导读:自然语言处理(NLP)是计算机科学,人工智能,语言学关注计算机和人类(自然)语言之间的相互作用的领域.因此,自然语言处理是与人机交互的领域有关的.在自然语言处理面临很多挑战,包括自然语言理解,因 ...

  8. 手把手教你看懂电脑硬件测试软件CPU-Z(一)

    当你选择电脑时,是否还在注意外观.颜色这些肤浅的外表吗?是不是认为买了个i7就是最新款的电脑了? 今天介绍一款电脑常用的硬件测试软件--CPU-Z,手把手教会你如何看自己电脑的CPU.显卡.硬盘.屏幕 ...

  9. 手把手教你看懂并理解Arduino PID控制库——引子

    2019独角兽企业重金招聘Python工程师标准>>> 介绍 本文主要依托于Brett Beauregard大神针对Arduino平台撰写的PID控制库Arduino PID Lib ...

最新文章

  1. linux 内存 段,Linux内存储器管理之分段机制
  2. 怎样将压缩文件上传到服务器上
  3. BSP技术详解3---有图有真相
  4. 3109. [CQOI2013]新数独【DFS】
  5. The First Python man in Github
  6. Android应用保活方案的另类出路,让你应用长生不老,实战案例
  7. 渗透测试工程师从业经验
  8. 电容或电感的电压_为什么并联电容器可以提高功率因数,而串联不行?
  9. 网页qq邮箱链接html,使用QQ邮箱打开网页上的电子邮件链接
  10. 学前端需要什么学历?
  11. 微信小程序、公众号侵权投诉流程
  12. 2019ICPC徐州 H - Yuuki and a problem (动态(带修)主席树 + 区间Mex问题)
  13. JavaScript:函数的可选参数
  14. 商用咖啡机 推荐.html,商用咖啡机推荐,半自动咖啡机如何使用?
  15. 生命中最美的风景就是曾经遇见了你
  16. impala 基础知识及使用
  17. 雷军:当CEO是因为被格式化了电脑
  18. Windows窗口API
  19. 数据库系统概论之数据模型
  20. [NEFU]Python应用课程 PPT速记

热门文章

  1. 爱立信推出一款特别的AAU产品
  2. C#,图像二值化(15)——全局阈值的一维最大熵(1D maxent)算法及源程序
  3. mysql year使用_MySQL YEAR()用法及代码示例
  4. 问题解决:error: ‘__s_getMD5Sum’ is not a member
  5. 记一次amd平台win10/win11随机死机蓝屏重启的问题
  6. sentinel与nacos持久化
  7. 随笔--C语言--putchar()和putc()函数
  8. thought, th Kobe 8
  9. 【你也能看得懂的电磁场与电磁波系列连载 37】
  10. 单工,半双工和全双工