我想知道.cpuprofile文件格式是否有任何(非)官方规范,这是在基于Chromium的浏览器开发者工具中使用JavaScript分析时生成的。
它是纯文本JSON,因此很容易获得调用树数据,但我不了解如何获取每个函数的时序信息。
此外,我对每个功能的点击计数感兴趣。
答案 0 :(得分:2)
根据documentation provided by @artm,可以使用kcachegrind分析输出。要将Chrome .cpuprofile文件加载到此文件中,您需要做的是将其转换为callgrind格式。
你没有提到你的开发环境,所以我不能说最好的方法是你最简单的方法。
文档提到了Google's perf tools和kcachegrind。这些工具需要手动构建,我没有方便的环境。
以下是我在安装了Node的Windows 8.1计算机上的使用方法。
为Node安装chrome2calltree。此命令实用程序会将.cpuprofile转换为callgrind格式。
安装QCacheGrind。这是一个Windows预构建的kcachegrind端口,可以让您可视化您的callgrind格式化文件。
转换.cpuprofile:
chrome2calltree -i test.cpuprofile -o callgrind.profile
使用QCacheGrind打开callgrind.profile。
答案 1 :(得分:0)
这可能不是您问题的直接答案,但this真的很棒。
用法非常简单:
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.
]}
答案 2 :(得分:0)
可能它值得注意但cpuprofile的JSON格式最近可能已经改变,所以它可能不是一个稳定的格式。例如在Chromium 44中(来自其构建档案的旧版本),它看起来像这样
jq keys < chromium_44.cpuprofile
[
"endTime",
"head",
"samples",
"startTime",
"timestamps"
]
在最新的Chrome 55中,它是
jq keys < chrome_55.cpuprofile
[
"endTime",
"nodes",
"samples",
"startTime",
"timeDeltas"
]
要小心谨慎。虽然
,但我没有看到任何关于格式的文档