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


Answers:


95

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

您可以在Chrome开发者工具docs中查看树状视图的示例。


43
啊-如果那是一个很高的百分比,我能做些什么吗?
hvgotcodes 2010年

2
@hvgotcodes-听起来是下面所有部分的百分比。现在,如果自我百分比很高,那么您将无能为力。...除非您的加价幅度很大。
尼克·克拉弗

1
您是否知道如何访问“(程序)”部分中的代码?我目前正在研究的项目中的JavaScript的某些部分确实会在那里结束,而我在调试器中到达那里的唯一方法是放置“ debugger;”。进入代码,这不太舒服。
JaroslavZáruba2012年

6
我认为这实际上是错误的,@ user1009908的答案是正确的。它不是根,而是它的本机代码。树视图示例未将其显示为根这一事实支持了。
studgeek 2014年

3
关于program()的高百分比,有时css动画会导致较高的CPU使用率,这将反映在program()中。不幸的是,探查器无法帮助您查明源。
ılǝ

31

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

看到这个线程:

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

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

显然,它包括空闲时间。另外,可以从chrome:// profiler /获得对(程序)的某些配置文件


7
同意-只是一个更新:它不再包括空闲时间。现在被单独报告为(idle)
2014年

15

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

看起来CPU Profiler部分就像许多其他基于gprof的概念的探查器一样

例如,self几乎是一个无用的数字,除非在您可以编辑的某些代码中出现类似气泡的大数字数组之类的东西。不大可能。

应包括被叫方,这样更有用。但是,除非在阻塞时间和运行时间都进行了采样,否则除了完全由CPU绑定的程序外,它仍然毫无用处。

它按功能而不是按代码行为您提供这些统计信息。这意味着(如果您可以依靠“ 百分比”),那么一个函数的成本就那么高,也就是说,如果您可以某种方式使它花费零时间(例如通过对它进行存根),那么该百分比就是您可以节省多少时间。

因此,如果您想专注于昂贵的功能,则需要在其中寻找可以优化的功能。为此,您需要知道如何在函数的代码行之间细分时间。如果您按代码行计算成本,那么您将直接进入这些代码行。

我不知道您是否能够获得更好的分析器,例如在行级别报告的墙上时钟堆栈采样器,例如Zoom。这是我的方法


@hvgotcodes:不确定。我不使用它们,因为我只是在调试器中获取堆栈快照。但是您使用的是Linux,对吗?您可以得到Zoom的试用版吗?这个很不错。
Mike Dunlavey 2010年

@hvgotcodes:那么,我所能提供的唯一帮助就是我所依赖的方法。
Mike Dunlavey,2010年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.