谷歌浏览器开发人员工具 - 分析结果文件格式
Google Chrome developer tools - Profiling results file format
我想知道是否有任何(非)官方规范的.cpuprofile文件格式,这是在基于Chromium的浏览器的开发人员工具中使用JavaScript分析时生成的。
它是纯文本JSON,因此很容易获取调用树数据,但我不明白如何获取每个函数的计时信息。
我也对每个函数的命中计数感兴趣。
根据 @artm 提供的文档,可以使用 kcachegrind 分析输出。 为了将Chrome .cpuprofile文件加载到其中,您需要做的是将其转换为callgrind格式。
你没有提到你的开发环境,所以我不能说你最简单的方法是什么。
文档提到了Google的性能工具和kcachegrind。 这些工具需要手动构建,我没有一个方便的环境来做到这一点。
以下是我在安装了Node的Windows 8.1机器上的做法。
-
为 Node 安装 chrome2calltree。 此命令实用程序会将您的 .cpuprofile 转换为调用格林格式。
-
安装 QCacheGrind。 这是一个Windows预构建的kcachegrind端口,可让您可视化调用研磨格式的文件。
-
转换您的 .cpuprofile:
chrome2calltree -i test.cpuprofile -o callgrind.profile
-
使用QCacheGrind打开您的callgrind.profile。
这可能不是对你的问题的直接回答,但这真的很棒。
用法非常简单:
fireunit.profile(function(){
document.getElementsByClassName("foo");
});
你会得到从fireunit.getProfile()返回的以下JavaScript对象:
{
"time": 8.443,
"calls": 611,
"data":[
{
"name":"makeArray()",
"calls":1,
"percent":23.58,
"ownTime":1.991,
"time":1.991,
"avgTime":1.991,
"minTime":1.991,
"maxTime":1.991,
"fileName":"jquery.js (line 2059)"
},
// etc.
]}
也许值得注意,但 cpuprofile 的 JSON 格式最近可能发生了变化,因此它可能不是一种稳定的格式。例如,在 Chromium 44(其构建存档中的旧版本)中,它看起来像这样
jq keys < chromium_44.cpuprofile
[
"endTime",
"head",
"samples",
"startTime",
"timestamps"
]
在最新的铬 55 中,它是
jq keys < chrome_55.cpuprofile
[
"endTime",
"nodes",
"samples",
"startTime",
"timeDeltas"
]
只是需要警惕的事情。不过,我没有看到太多关于该格式的文档
- webpack代码拆分了handlerbs文件——结果是文件很大
- 在IntelliJ IDEA中,如何将JS文件从“;查找用法“;使用TypeScript时的结果
- 使用blob从ajax结果下载文件
- 一个javascript实现base64图像编码并将结果写入文本文件
- 在页面对象文件中验证sendKeys结果会导致未定义的错误(Protractor)
- 如何使用node.js和express在文件中写入结果
- 搜索XML文件并使用javascript显示结果
- 如何将 JavaScript 中 HTML 的结果写入文件
- 如何将结果从 Javascript 导出到 csv 文件
- 迭代 JSON 文件并且未在 Javascript 中正确返回结果
- HTML5 文件阅读器如何返回结果
- NodeJS中的Parse Json文件在Node中显示意外结果
- 读取一个本地文件,编码为base64,我想给用户一个将结果保存到文件的选项
- jquery我应该如何在多个html文件中实时搜索结果
- 如何在javascript变量中获取php文件的结果
- 使用AJAX上传文件、处理并使用Flask将结果返回到Javascript
- 在使用Protractor进行测试时,我可以用json文件替换结果,而不是调用实际的REST端点
- 如何从批处理文件调用一个带有2个参数的java脚本函数,并将结果返回到环境变量
- 谷歌浏览器开发人员工具 - 分析结果文件格式
- 为什么是结果文件.getElementById在本例中为null