【问题标题】:Google Chrome developer tools - Profiling results file formatGoogle Chrome 开发者工具 - 分析结果文件格式
【发布时间】:2015-01-14 20:44:58
【问题描述】:

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

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

我也对每个函数的命中计数感兴趣。

【问题讨论】:

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


【解决方案1】:

这可能不是您问题的直接答案,但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】:

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

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

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

    这是我在安装了 Node 的 Windows 8.1 机器上进行的操作。

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

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

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

    4. 使用 QCacheGrind 打开您的 callgrind.profile。

    【讨论】:

      【解决方案3】:

      也许值得注意,但是 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"
      ]
      

      只是需要警惕的事情。不过,我还没有看到太多关于格式的文档

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-01-13
        • 1970-01-01
        • 2018-02-16
        • 1970-01-01
        • 2016-10-30
        • 2016-06-04
        • 1970-01-01
        相关资源
        最近更新 更多