###JavaScript分析数据图表介绍
使用谷歌Chrome浏览器,打开V8测试套件页面,点击开始分析
按钮或者按Cmd+E快捷键开始记录JavascriptCPU分析。现在,刷新V8测试套件页面。
当页面重新加载完毕,一个基准测试结果的评分将会出现。回到DevTools,点击停止
按钮或者再次按Cmd+E快捷键来停止记录。
上图的Bottom Up
视图列出了影响性能的函数,它也能够用来检查这些函数的调用路径。
现在,通过点击Bottom Up / Top Down选择按钮来选择Top Down
视图,然后点击函数列左边的小箭头,Top Down
视图展示了一个调用结构的总体情况,从调用栈的顶部开始。
在函数列中选择一个函数,然后点击Focus selected function
按钮(眼睛图标)。
这将过滤分析结果,只展示选中的函数和它的调用程序。点击Reload
按钮(刷新图标)来恢复分析及过的原始状态。
选择函数列中的一个函数,然后点击Exclude selected function
按钮(X图标)。根据你选择的函数,你会看到类似如下图片的东西:
Exclude selected function
按钮的作用是从分析结果中移除选中的函数,然后计算排除之前函数后,调用函数的总时间。点击Reload
按钮(刷新图标)来恢复分析及过的原始状态。
你可以记录多份分析数据图表。点击开始分析
按钮,重新载入V8基准测试页面,然后点击停止分析
按钮。
左侧的侧边栏列出了你记录的分析数据图表,右边的树形视图展示了选中的分析数据图表的信息集。
###使用烈焰图
烈焰图视图提供了一个JavaScript执行过程的可视化表示,和Timeline
与Network
展示的相似。执行完一个JavaScriptCPU数据分析后,通过详细视图中的烈焰图的功能,你可以以另一种方式来查看分析数据图表的数据。
#####可视化执行路径
通过分析和理解函数调用进程,你能够对你的应用的执行路径在视觉上得到一个更好的理解。
#####通过颜色码识别异常值
当缩小烈焰图,你可以识别出能够优化的重复图样,或者更重要的,你能够更加轻易地识别出异常值或者意想不到的执行过程。
#####时间量度(类似时间轴)上的可视化JavaScript分析数据
其它的JavaScript分析结果的数据是随着时间推移的累积,而烈焰图的报告数据是按时间显示的。这表明当你看到时间发生的时候,你就能跳进他们的时间量度里面,获取一些JavaScript执行过程的概览。举个例子,当你看到时间轴上黄色大条纹,这是一个能够查看问题的完美方法。
也许你甚至想要在记录JavaScript分析数据的同时,也做一个时间轴记录,这里有一个样例你可以这么做:
(function() {
console.timeline();
console.profile();
setTimeout(function() {
console.timelineEnd();
console.profileEnd();
}, 3000);
})();
注意:水平轴表示时间,垂直轴是调用栈。耗性能的函数会显得很宽。调用栈在Y轴上表示,所以一个高的火焰图是不必关心的,请密切关注宽敞的柱状图,无论它们在调用栈的哪个位置。
######如何使用烈焰图:
- 打开DevTools,到Profiles面板。
- 选择Record JavaScript CPU profile选项然后点击开始按钮。
- 当你已经做完数据选择,点击停止按钮。
在分析数据视图,从选择菜单中选择可视化的烈焰图。
注意:为了提高记录分析数据的准确性,请在DevTools的设置面板中勾选High resolution CPU profiling的选项,之后,你就能够以十分之一毫秒的度量来查看烈焰图的数据。
面板的顶部展示了整个记录过程的概观。你可以用鼠标选择指定区域,并放大这个区域。你也可以通过点击空白区域和拖动你的鼠标来向左右滚动。详细视图的时间量度会相应的伸缩。
在详细视图中,函数的调用栈被表示为一个堆栈块。处于上面的块是被处在下面的函数块调用。鼠标悬浮在一个函数快上面将会显示函数名和耗时数据:
- Name-函数的名称。
- Self time-函数完成当前调用的时间,只包括函数本身的语句,不包括它调用的其它函数的时间。
- Total time-函数完成调用的时间,包括它调用的其它函数的时间。
- Aggregated self time-整个记录过程中,函数调用的总时间,不包括该函数调用其它函数的时间。
- Aggregated total time-函数调用的总时间,包括该函数调用其它函数的时间
烈焰图上的颜色是随机的,然而在整个调用过程中函数的颜色都会一致的。这让你能够轻易地查看函数的执行过程,认出异常值。时间轴上颜色的使用跟函数消耗资源是无关联的。
点击函数块能够在Sources面板中打开包含它的JavaScript文件,调转到函数定义的行。