What is “(program)” in Chrome debugger’s profiler?

JavascriptGoogle Chrome-Devtools

Javascript Problem Overview


What is “(program)” in the function column of the Chrome debugger?

Javascript Solutions


Solution 1 - Javascript

(program) is Chrome itself, the root of the tree calling all other code...it's there because the jump from native code to JavaScript, resource loading, etc. has to start somewhere :)

You can see examples of the treeview in the Chrome developer tool docs.

Solution 2 - Javascript

I believe (program) is native code, not the root of the tree.

See this thread:

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

So, more like system calls than like main().

Apparently it includes idle time. Also, some profiling of (program) is available from chrome://profiler/

Solution 3 - Javascript

As @Nick says, it has to start somewhere.

It looks like the CPU Profiler part is like so many other profilers that are based on the same concepts as gprof.

For example, self is nearly a useless number unless there is something like a bubble-sort of a big array of numbers in some code that you can edit. Highly unlikely.

Total should include callees, so that's more useful. However, unless samples are taken during blocked time as well as during running time, it is still pretty useless except for totally cpu-bound programs.

It gives you these stats by function, rather than by line of code. That means (if you could rely on Total percent) that a function costs that much, in the sense that if you could somehow make it take zero time, such as by stubbing it, that percent is how much time you would save.

So if you want to focus on a costly function, you need to hunt inside it for what could be optimized. In order to do that, you need to know how the time is subdivided among the lines of code in the function. If you had cost on a line of code basis, it would take you directly to those lines.

I don't know if you will be able to get a better profiler, like a wall-clock stack sampler reporting at the line level, such as Zoom. Here's how I do it.

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionhvgotcodesView Question on Stackoverflow
Solution 1 - JavascriptNick CraverView Answer on Stackoverflow
Solution 2 - Javascriptuser1009908View Answer on Stackoverflow
Solution 3 - JavascriptMike DunlaveyView Answer on Stackoverflow