Diferencia entre 'self' y 'total' en Chrome CPU Profile of JS

229

¿Cuál es la diferencia entre las columnas 'self' y 'total' en el perfil de CPU de Chrome del código JS?

ingrese la descripción de la imagen aquí

CoolUserName
fuente
13
El tiempo propio casi nunca es útil en un software serio, porque se dedica casi todo el tiempo a llamar al sistema / biblioteca / DB / IO, etc., por lo que el contador del programa gasta muy poco tiempo real, como porcentaje, en su código, a menos que usted sucede que escribe algún tipo de lazo cerrado. Puede decirle que se usa mucho en las rutinas de un sistema, pero eso no sirve de nada. Necesita saber qué parte de su código hace que se dedique mucho tiempo.
Mike Dunlavey
Si una función se bloquea llamando a un objeto incorporado (como el envío XMLHttpRequest no asíncrono), el tiempo propio podría ser muy útil. En tales casos, estas funciones, si bien son los cuellos de botella, pueden no aparecer en la parte superior de las mediciones de tiempo total.
Konstantin

Respuestas:

303

self es cuánto tiempo se pasó trabajando directamente en esa función.

total es cuánto tiempo pasó en esa función y en las funciones que llamó.

duskwuff -inactive-
fuente
11
¿entonces self solo sería declaraciones en línea y no llamadas a funciones? ¿Y el total se está ejecutando todo el código dentro de la llamada?
CoolUserName
42
Por cierto, dado que las personas parecen encontrar esta respuesta útil: esto es cierto para los perfiladores en general, no solo en Chrome.
duskwuff -inactive-
2
¿Qué pasaría si una función se llama recursivamente? ¿cómo lo leerías correctamente entonces?
David Limkys
3
El enlace de documentos está aquí (en la sección 'Ver detalles de la función') . Self time: Cuánto tiempo se tardó en completar la invocación actual de la función, incluidas solo las declaraciones en la función misma, sin incluir las funciones que llamó. Total time: El tiempo que se tardó en completar la invocación actual de esta función y las funciones que llamó.
Iman Mahmoudinasab
¿Y cuál es la semántica del porcentaje que ahora se muestra a lo largo de los valores de tiempo total y propio? Quiero decir que es un porcentaje de qué en qué.
jayarjo
10

Tiempo propio: para una función, es la cantidad de tiempo para ejecutar código dentro de la función (declaraciones en línea). La comprobación del rendimiento de las funciones individuales se conoce como análisis ascendente.

Tiempo total: para una función, es el tiempo propio de esa función y los tiempos propios de todas las funciones que la función llama. Verificar el desempeño de las funciones junto con sus nombres es un análisis de arriba hacia abajo.

NB: el hecho de que una función tenga un alto tiempo propio no significa que la función en sí sea ineficiente. También es importante observar cuántas veces se llama esa función.

Artículo de Intel

JSON C11
fuente