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

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

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

Solutions/Answers:

Solution 1:

(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:

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:

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.

Related:  Replace multiple strings with multiple other strings

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.

Related:  this.href vs $(this).attr('href')