Google Chrome开发人员工具 - 分析结果文件格式

时间:2014-11-17 20:16:29

标签: javascript google-chrome profiling google-chrome-devtools

我想知道.cpuprofile文件格式是否有任何(非)官方规范,这是在基于Chromium的浏览器开发者工具中使用JavaScript分析时生成的。

它是纯文本JSON,因此很容易获得调用树数据,但我不了解如何获取每个函数的时序信息。

此外,我对每个功能的点击计数感兴趣。

3 个答案:

答案 0 :(得分:2)

根据documentation provided by @artm,可以使用kcachegrind分析输出。要将Chrome .cpuprofile文件加载到此文件中,您需要做的是将其转换为callgrind格式。

你没有提到你的开发环境,所以我不能说最好的方法是你最简单的方法。

文档提到了Google's perf tools和kcachegrind。这些工具需要手动构建,我没有方便的环境。

以下是我在安装了Node的Windows 8.1计算机上的使用方法。

  1. 为Node安装chrome2calltree。此命令实用程序会将.cpuprofile转换为callgrind格式。

  2. 安装QCacheGrind。这是一个Windows预构建的kcachegrind端口,可以让您可视化您的callgrind格式化文件。

  3. 转换.cpuprofile: chrome2calltree -i test.cpuprofile -o callgrind.profile

  4. 使用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"
]

要小心谨慎。虽然

,但我没有看到任何关于格式的文档