Chrome 调试器分析器中的“(程序)”是啥?

Posted

技术标签:

【中文标题】Chrome 调试器分析器中的“(程序)”是啥?【英文标题】:What is “(program)” in Chrome debugger’s profiler?Chrome 调试器分析器中的“(程序)”是什么? 【发布时间】:2011-04-20 08:42:53 【问题描述】:

Chrome调试器功能栏中的“(程序)”是什么?

【问题讨论】:

【参考方案1】:

(program) 是 Chrome 本身,调用所有其他代码的树的根...它在那里是因为从本机代码跳转到 javascript、资源加载等必须从 某处 开始: )

您可以查看树视图的示例in the Chrome developer tool docs。

【讨论】:

啊——如果百分比很高,我能做些什么吗? @hvgotcodes - 听起来是下面所有部分的百分比。现在,如果 self 百分比很高,那么您无能为力....除非您的标记通常很重。 请问您知道如何访问“(程序)”部分中的代码吗?不知何故,我目前正在处理的项目中的 JavaScript 部分最终会出现在那里,而我可以在调试器中到达那里的唯一方法是放置“调试器”;进入代码,这不是很舒服。 我认为这实际上是错误的,@user1009908 的回答是正确的。它不是根,它的本机代码。树视图示例不将其显示为根的事实支持这一点。 关于 program() 的高 %,有时 css 动画会导致高 CPU 使用率,这将反映在 program() 中。不幸的是,分析器无法帮助确定源头。【参考方案2】:

我相信(程序)是本机代码,而不是树的根。

看到这个帖子:

https://bugs.webkit.org/show_bug.cgi?id=88446

因此,更像系统调用而不是 main()。

显然它包括空闲时间。此外,(程序)的一些分析可以从 chrome://profiler/

【讨论】:

同意 - 但只是一个更新:它不再包括空闲时间。现在单独报告为(空闲)【参考方案3】:

正如@Nick 所说,它必须从某个地方开始。

看起来 CPU Profiler 部分与许多其他基于 same concepts as gprof 的分析器一样。

例如,self 几乎是一个无用的数字,除非您可以编辑某些代码中的大数组数字的冒泡排序。极不可能。

Total 应该包括被调用者,这样更有用。但是,除非在阻塞时间和运行时间都采集样本,否则除了完全受 CPU 限制的程序外,它仍然毫无用处。

它通过函数而不是代码行为您提供这些统计信息。这意味着(如果你可以依赖 Total 百分比)一个函数会花费那么多,从某种意义上说,如果你能以某种方式让它花费零时间,例如通过存根,这个百分比就是多少您将节省的时间。

因此,如果您想专注于一项昂贵的功能,您需要在其中寻找可以优化的内容。为此,您需要知道时间是如何在函数中的代码行中细分的。如果您在代码行的基础上花费了成本,它将直接将您带到这些行。

我不知道您是否能够获得更好的分析器,例如在行级别报告的挂钟堆栈采样器,例如Zoom。这是how I do it。

【讨论】:

@hvgotcodes:不确定。我不使用它们,因为我只是在调试器中获取堆栈快照。但是你在 Linux 上,对吧?你能得到一份Zoom的试用版吗?挺好的。 @hvgotcodes:那么,我能提供的唯一帮助就是我所依赖的方法。

以上是关于Chrome 调试器分析器中的“(程序)”是啥?的主要内容,如果未能解决你的问题,请参考以下文章

chrome控制台中网络中的“其他发起者”是啥?

Chrome开发者模式报错Failed to load resource问题分析

使用 --inspect 分析 NodeJS 时,“(程序)”是啥意思

Google Chrome抓包分析详解

如何在 Chrome 的性能分析器中调试匿名 JavaScript 函数?

Adobe Air StageWebView 中的 Android 远程 Chrome 调试