¿Qué es "(programa)" en el perfilador del depurador de Chrome?

Respuestas:

95

(program)es el propio Chrome, la raíz del árbol que llama a todos los demás códigos ... está ahí porque el salto del código nativo a JavaScript, la carga de recursos, etc. tiene que comenzar en algún lugar :)

Puede ver ejemplos de la vista de árbol en los documentos de la herramienta para desarrolladores de Chrome .

Nick Craver
fuente
43
ah, entonces si eso es un porcentaje alto, ¿hay algo que pueda hacer al respecto?
hvgotcodes
2
@hvgotcodes: parece ser el porcentaje de todas las porciones a continuación. Ahora, si el porcentaje de uno mismo es alto, no hay mucho que pueda hacer ... a menos que su margen general sea muy pesado.
Nick Craver
1
¿Sabe, por favor, cómo acceder al código en la sección "(programa)"? De alguna manera, partes de JavaScript en el proyecto en el que estoy trabajando terminan allí, y la única forma en que puedo acceder al depurador es colocando "depurador"; en el código, que no es del todo cómodo.
Jaroslav Záruba
66
Creo que esto es realmente incorrecto y la respuesta de @ user1009908 es correcta. No es la raíz, es su código nativo. El hecho es que el ejemplo de la vista de árbol no lo muestra como la raíz.
studgeek
3
Con respecto al alto% del programa (), a veces las animaciones css conducen a un alto uso de la CPU, que se reflejará en el programa (). Lamentablemente, el generador de perfiles no puede ayudar a señalar la fuente.
El
31

Creo que (programa) es código nativo, no la raíz del árbol.

Ver este hilo:

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

Entonces, más como llamadas al sistema que como main ().

Aparentemente incluye tiempo de inactividad. Además, algunos perfiles de (programa) están disponibles en chrome: // profiler /

usuario1009908
fuente
77
De acuerdo, pero solo una actualización: ya no incluye el tiempo de inactividad. Eso ahora se informa por separado como (inactivo)
Gio
15

Como dice @Nick, tiene que comenzar en alguna parte.

Parece que la parte CPU Profiler es como muchos otros perfiladores que se basan en los mismos conceptos que gprof .

Por ejemplo, self es casi un número inútil a menos que haya algo así como una especie de burbuja de una gran variedad de números en algún código que puede editar. Altamente improbable.

Total debe incluir calles, por lo que es más útil. Sin embargo, a menos que se tomen muestras durante el tiempo bloqueado, así como durante el tiempo de ejecución, sigue siendo bastante inútil, excepto para programas totalmente vinculados a la CPU.

Le proporciona estas estadísticas por función, en lugar de por línea de código. Eso significa (si pudieras confiar en el porcentaje total ) que una función cuesta tanto, en el sentido de que si de alguna manera pudieras hacer que llevara tiempo cero, como al tropezar, ese porcentaje es cuánto tiempo ahorrarías.

Entonces, si desea centrarse en una función costosa, debe buscar dentro de ella lo que podría optimizarse. Para hacer eso, necesita saber cómo se subdivide el tiempo entre las líneas de código en la función. Si hubiera tenido un costo por línea de código, lo llevaría directamente a esas líneas.

No sé si podrá obtener un mejor perfilador, como una muestra de pila de reloj de pared que informa a nivel de línea, como Zoom . Así es como lo hago .

Mike Dunlavey
fuente
@hvgotcodes: no estoy seguro. No los uso, porque solo tomo stackshots en un depurador. Pero estás en Linux, ¿verdad? ¿Puedes obtener una copia de prueba de Zoom? Es bastante bueno.
Mike Dunlavey
@hvgotcodes: Bueno, entonces, la única ayuda que puedo ofrecer es el método en el que confío.
Mike Dunlavey