匿名模式

匿名模式可以保证Chrome在一个相对干净的环境下运行。比如安装了许多chrome插件,这些插件可能会影响我们分析性能表现
使用快捷键ctrl + shift + N 即可代码匿名模式下的chrome新标签页

如果想分析移动设备 的页面性能,可用CPU控制器来模拟移动端CPU。
1、点击performance
2、点击最右侧设置按钮(⚙),工具栏会展开更多模式,如下图选中CPU 4* slowdown,就能模拟4倍低速CPU

perfomance record


第一行:显示了我们截屏的时间0-3200ms,也就是说我们大概录了3秒的时间
第二行:fps的帧率图,我们可以只观的看到帧率的变化
第三行:cpu使用率图,我们也可以只官的看到
第四行:net,这个忽略不说,应该是网络下载的消耗
第五行:这个是重点,frames,我们可以看到每一帧渲染的图片和它渲染的时间,我们可以一帧一帧的选中,然后在下面的summary中查看具体的消耗,其实我们比较关心的是cpu和gpu的消耗,这个都是一眼可以从summary中看到的,但如果要定位到每个函数,还得使用第六行
第六行:我们可以选中一帧的时间,来查看这一帧里函数的使用情况
第七行:raster
第八行:GPU的消耗,注意这里不仅仅指的是GPU渲染的消耗,还包括了CPU和GPU的交互成本,比如给shader变量赋值
第九行:这个其实就是明细,我们在上面八行中,五论选中哪一行的那个时间段,这里都会有具体的消耗明细
关于第九行:再说一下,sumary是以图的方式告诉你你当前的消耗,bottom_up意思是一些重要的函数调用的时间消耗
六大必读知识:如下图

1:FPS,这里显示的是一个fps绿色柱状张图
2:cpu的时间耗费图,每一帧的cpu的计算时间都会显示出来,如果这里面的黄色部分比较多,就像上面一样,说明每一帧的的计算量挺耗费CPU的
3:net网络图,网络的上传下载耗时
4:Frames,这里放置一张一张的图,如果我们点击某一张,那么下面的6就会解说这一帧干了啥
5:这是一个可以大范围分析的选项,如果选中了这个,就会根据我们在1中选中的帧率范围进行分析,这和4只能分析一帧做了一个拓展
6:对4和5进行分析
可以看到6部分的分析包含以下四个部分
sumary:这个也是一个总结图,可以从总体上去分析,不能定位具体的函数
bottom-Up:代码的执行就是一棵树,从根节点出发,渲染执行整个树,而这个恰恰是从叶子节点开始的,所以这里可以很直观的看到是哪个节点比较耗时,你可以把函数理解为一个一个叶子节点,他们的嵌套就是父节点和子节点的关系,所以一般情况,你想快速知道那个函数比较耗时,就使用这个方式来查看,不需要一层层的往下查找了
call-tree:这个就很常规了,从根节点出发,会把耗时的叶子节点显示出来,我们需要一级一级的拨开,才可以找到耗时的叶子节点
eventLog:时间日志,这里是我比较喜欢用的方式,下面我会对这个进行更细致的解释
事件分析之脚本

start Time:表示触发这个函数的开始时间,
self Time:表示当前这个函数的实际执行时间,这个相当重要,可以看出来这个函数的是不是真的耗时,结合bottom_up这个排序来看
Total Time:表示当前这个函数的总共执行时间
关于start Time:这个时间就是当前这个函数的执行时间,没什么好说的,注意selfTime+TotalTime 不等于下次的开始时间,我们这里只谈到了脚本的执行时间,浏览器还要重绘和重排还有一些其他的操作呢,而且我们的游戏是基于定时器触发的,不到时间,也不会触发下一帧的渲染,还要包含空闲时间
关于self Time和Total Time都是函数的执行时间,但却有很大不同,函数中存在嵌套,一个函数从第一行执行到最后一行,叫做总共花费时间,但函数中存在着非常多的函数嵌套,这个时间就不能算当前函数的实际执行时间,所以一个函数的实际执行时间,应该排除这个函数里所有嵌套的函数执行的时间,所以一个函数的实际执行时间应该是一个chrome在性能分析的一个最小计算单位,看第一帧,发现selfTime的时间为0,是说这个函数的实际执行时间为0,其实也不完全是,就是说可以忽略不计,
看最上面cpu部分黄色的面积起来了,那CPU一定很辛苦,那接下来就开始查原因吧
第一步
注意看这张图片,最上面我选择了全部的帧进行的判断,中间用的是main,再往下是eventlog,最后我选择了要查看scripting这一下,scripting这个是脚本执行的意思,就是说我们的代码执行耗时,这里包含两部分,一部分是CPU端的游戏逻辑,一部分是在代码中切换GPU状态的耗时,所以这部分内容是我们最直接核心的性能查看点
注意到下面这个椭圆里只有两个部分,他们都是外部触发的,一个是浏览器触发的动画帧(animationFrameFired),一个是js的定时触发的定时器(timer fired),所以可以想到,这游戏逻辑一帧一帧的触发渲染,其实这里就是源头,最上面包含多少帧,那此处下面就会出现多少个这两种触发器的组合,随便选择一个即可
第二步:我们只分析第一帧,一层一层往下拨开,截图如下:

一个叫timeJiSuan的函数强行入境,它已经不能再继续寻找了,它总的执行时间和实际执行时间都是11.8ms,实锤了,就是它,在吃CPU的计算,点击右侧的链接找到这个函数,截图如下

你看这个函数的内部写了一个10000000次的循环遍历,这能不卡吗,它这一帧的耗时是11.8ms,我们一帧的时间最多才16.6ms,这个函数有点过了啊,那么问题就找到了!!!!
两个发现
1:注意到截图左侧还有个2126.2ms,这个是这个函数总的耗时,这个和录制的时间有关系,也就说从录制开始到结束这个函数总共执行了这么多时间,这个是一帧一帧加起来的
2:一个js普通for循环执行10000000次大概耗时11.8ms

一般像下面这样使用就可以快速定位到性能消耗大的函数了啊

Loading事件
Parse HTML 浏览器执行HTML解析
Finish Loading 网络请求完毕事件
Receive Data 请求的响应数据到达事件,如果响应数据很大(拆包),可能会多次触发该事件
Receive Response 响应头报文到达时触发
Send Request 发送网络请求时触发
Scripting事件
Animation Frame Fired 一个定义好的动画帧发生并开始回调处理时触发
Cancel Animation Frame 取消一个动画帧时触发
GC Event 垃圾回收时触发
DOMContentLoaded 当页面中的DOM内容加载并解析完毕时触发
Evaluate Script A script was evaluated.
Event js事件
Function Call 只有当浏览器进入到js引擎中时触发
Install Timer 创建计时器(调用setTimeout()和setInterval())时触发
Request Animation Frame A requestAnimationFrame() call scheduled a new frame
Remove Timer 当清除一个计时器时触发
Time 调用console.time()触发
Time End 调用console.timeEnd()触发
Timer Fired 定时器激活回调后触发
XHR Ready State Change 当一个异步请求为就绪状态后触发
XHR Load 当一个异步请求完成加载后触发
Rendering事件
Invalidate layout 当DOM更改导致页面布局失效时触发
Layout 页面布局计算执行时触发
Recalculate style Chrome重新计算元素样式时触发
Scroll 内嵌的视窗滚动时触发
Painting事件
Composite Layers Chrome的渲染引擎完成图片层合并时触发
Image Decode 一个图片资源完成解码后触发
Image Resize 一个图片被修改尺寸后触发
Paint 合并后的层被绘制到对应显示区域后触发

瀑布流(Waterfall)


瀑布流中各项指标含义如下:

Queueing

浏览器将资源放入队列时间,比如:遇到更高优先级的请求或请求并发超过 6 了。

Stalled

因放入队列时间而发生的停滞时间。

Proxy negotiation

与代理服务器协商时间。

DNS Lookup

DNS 解析时间,浏览器需要将域名转换成 IP。

Initial Connection

在浏览器发送请求前,需要建立 HTTP 连接的时间。

SSL

如果网站使用了 HTTPS,这个就是浏览器与服务器建立安全性连接的时间。

Request sent

请求发送的时间。

Waiting (TTFB)

等待服务端返回数据的时间,这个时间受制于服务端处理性能。

Content Download

浏览器下载资源的时间,这个时间受制于文件大小和带宽。

可以看出,就是将一次 HTTP 请求所花的时间做了拆解,从而有助于分析和定位问题所在。

那么该如何减少资源耗时或者提高网页打开速度呢?我想有以下几个方向可以考虑:

1:优化资源顺序,减少首屏打开时间。
2:合理收敛和发散网站的域名,域名太多导致更多的 HTTP 连接无法复用,域名太少导致超过浏览器限制并等待。
3:减少 HTTP 请求数,如合理利用客户端缓存,现在前端也有些工具可以合并 JS/CSS 资源等

浏览器之缓存


浏览器资源缓存分两种,浏览器第一次下载资源以后,会将资源缓存到磁盘上,并且内存中也有一份,当刷新网页时,会从内存中取,当切换网页时,请求的资源会优先从磁盘上找,找不到会从网络上下载
下面以打开百度首页进行举例说明:
第一步打开该网页,其实我这个网页的资源是进行过清理

第二步硬核清理一下资源并重新打开一下网页:
点击资源,右键,在弹出的小界面确定clear,刷新一次界面,结果如下

第三步:在第二步的基础上继续刷新界面
from memory cache
time:0ms

第四步:关闭这个网页,重新打开
from disk cache
time:xxms

跨域设置

版本号49之前的跨域设置
先介绍一下老方法,参考了一些网上的教程,其实直接在打开命令上加–disable-web-security就可以了。
具体做法为:
1.下载并安装好chorme浏览器后在桌面找到浏览器快捷图标并点击鼠标右键的属性一栏。
2.在属性页面中的目标输入框里加上 --disable-web-security 如下图所示:
3.点击应用和确定后关闭属性页面,并打开chrome浏览器。如果浏览器出现提示“你使用的是不受支持的命令标记 --disable-web-security”,那么说明配置成功
版本号49以后的跨域设置
在C盘下新建一个文件夹MyChromeDevUserData
打开chrome属性,将下面这句话放在目标栏的后面

--disable-web-security --user-data-dir=C:\MyChromeDevUserData

chrome浏览器性能分析相关推荐

  1. Chrome浏览器性能对比测试报告

    w Chrome浏览器性能对比测试报告 十五年前,Netscape推出第二代浏览器并改名为Navigator.后来微软认识到浏览器的重要性,迅速推出了最早的IE版本,并捆绑进操作系统,最终打 败了Ne ...

  2. chrome://tracing 性能分析神器

    在Soc性能分析的时候,往往需要看一些master或slave的busy / idle状态占比,如果能像看波形那样看到各个master/slave在各个时间段的状态,这样可以非常直观地看出性能瓶颈点. ...

  3. Chrome 浏览器性能对比测试报告

    十五年前,Netscape推出第二代浏览器并改名为Navigator.后来微软认识到浏览器的重要性,迅速推出了最早的IE版本,并捆绑进操作系统,最终打 败了Netscape.时间进入了21世纪,浏览器 ...

  4. DynaTrace Ajax Edition:IE浏览器性能分析工具

    DynaTrace AJAX是一个运行在IE浏览器下的免费页面性能分析工具,它可以支持主流的IE6.IE7.IE8浏览器.这款工具正是DynaTrace为进入前端性能分析领域而发布的.您可以利用它来分 ...

  5. 各浏览器性能分析工具

    https://blog.csdn.net/five3/article/details/7686376 https://www.ibm.com/developerworks/cn/web/1205_x ...

  6. CSS动画的性能分析和浏览器GPU加速

    此文已由作者袁申授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. 有数的数据大屏可以在一块屏幕上展示若干张不同的图表,以炫酷的方式展示各种业务数据.其中有些图表使用CSS实现了 ...

  7. 移动端测试 APP启动性能分析 WebView性能分析 H5性能分析 卡顿分析 帧分析 CPU统计 网络流量分析 耗电量指标 弱网测试 健壮性测试 兼容性测试 Amdahl

    Android官网使用指南性能:https://developer.android.com/topic/performance 一.APP启动性能分析 APP的启动过程 调用起APP.创建一个空白窗口 ...

  8. chrom 性能分析工具 Performance

    在chrom的工具栏,有一个面板performance,点开之后操作后,你会看到一堆五颜六色的图表,但是具体是干什么的,未可知 performance面板是Chrome 的性能分析工具,那应该和页面有 ...

  9. 网络爬虫系列(一):chrome抓包分析

    网络爬虫系列(一):chrom抓包分析 1.测试环境 2.网页分析 (1) 网页源代码分析 (2) 网络抓包分析 1.测试环境 浏览器:chrome浏览器 网页分析工具 :开发者工具 2.网页分析 ( ...

  10. chrome浏览器缓慢_缓慢的浏览器? 这是加快Chrome浏览器速度的方法

    chrome浏览器缓慢 Does your Chrome browser feel like it's running a bit slower than usual? These tips and ...

最新文章

  1. Exploring Data with Python免费电子书
  2. Lua 5.1 参考手册
  3. 关键字提取_从杂乱无章的表格中找出关键字,批量提取字符
  4. 这个文件传输神器完爆 FTP
  5. 禁止多媒体文件的预览功能
  6. 网易搞事情,一首《程序员disco》唱给1024程序员节
  7. mysql 交叉统计_统计知识——交叉分组表
  8. 【IT资讯】继哈工大Matlab软件被美禁用后,华为、360再遭Docker软件禁令
  9. 使用Thread类来创建线程
  10. DEAP2.1软件与Malmquist指数操作说明
  11. 【校内模拟】五彩斑斓(拓扑排序)
  12. 全国计算机网络英语,2007年10月自考试题计算机网络管理全国试卷(国外英语资料).doc...
  13. Workbook类提供的方法
  14. QTP中的Action有什么作用?有几种?
  15. 毕达哥拉斯 三角形数和正方形数
  16. 做律师的风险不止于此啊!!
  17. 手动挡五个档位示意图_手动挡车档位介绍,手动挡挡位示意图
  18. 2023东南大学计算机考研信息汇总
  19. Django计算机毕业设计jspm高校职称申报系统(程序+LW)Python
  20. java 算数表达式 转成 二叉树,将算术表达式((a+b)+c*(d+e)+f)*(g+h)转化为二叉树。...

热门文章

  1. 简历在线制作计算机,简历在线生成,在线生成PDF或word格式简历
  2. 程序员常用的计算机编程语言介绍
  3. 计算机 仿真 流体力学剪切应力,基于影像的计算流体力学在冠状动脉疾病中的研究进展...
  4. mysql 字典表设计_字典表设计
  5. R语言之dpqr概率函数
  6. 〖EXP〗NSA MS17010永恒之蓝漏洞一键工具
  7. Oracle数据库备份与还原语句
  8. macOS远程管理linux,MacOS远程控制工具
  9. 【最新原创】中国移动(中国联通)_通信账单,详单,个人信息抓取爬虫代码
  10. 怎么把java程序打包?java源代码打包方法