Al escribir un programa JavaScript, si necesita conocer el tiempo de ejecución de un cierto código, puede usar console.time (). Sin embargo, al analizar programas de JavaScript con lógica más compleja e intentar encontrar cuellos de botella de rendimiento, console.time () no es aplicable, un análisis en profundidad del funcionamiento de los programas de JavaScript con lógicos más complejos para insertar una gran cantidad de declaraciones consolas.time (), lo que indudablemente es inaceptable. Para la sintonización del programa JavaScript con lógica compleja, la forma correcta es usar console.profile ().
Soporte del navegador
Firefox, Google Chrome y Safari, que han instalado el complemento de Firebug, todas las declaraciones de consolador.profile () y las últimas versiones de IE y Opera también proporcionan funciones de perfil. El uso de console.profile () en varios navegadores principales es similar. Este artículo solo presenta el uso de console.profile () en Firebug. Una cosa que vale la pena señalar es que si usa la consola Firebug para escribir directamente el código experimental JavaScript, entonces console.profile () no es válido.
Uso de console.profile ()
El uso de console.profile () es muy simple: insertar console.profile () donde necesita iniciar el perfil e insertar console.profileend () donde termina el perfil. El siguiente código es un ejemplo:
La copia del código es la siguiente:
función dotask () {
dosubtaska (1000);
dosubtaska (100000);
dosubtaskb (10000);
dosubtaskc (1000,10000);
}
función dosubtaska (count) {
para (var i = 0; i <count; i ++) {}
}
función dosubtaskb (count) {
para (var i = 0; i <count; i ++) {}
}
función dosubtaskc (countx, condado) {
para (var i = 0; i <countx; i ++) {
para (var j = 0; j <condado; j ++) {}
}
}
console.profile ();
dotask ();
console.profileend ();
Ejecutar console.profile () antes de ejecutar la función dotask (). Después de completar la función dotask (), se puede recopilar la información detallada durante el proceso de ejecución de la función dotask (). Puedes ver en la consola de Firebug:
A partir de los resultados, podemos ver que el tiempo de perfil es de 101.901 ms en total, lo que implica 5 llamadas de funciones. El título predeterminado del resultado es "Perfil", que se puede personalizar pasando parámetros a la función console.profile (). Por ejemplo, el uso de console.profile ("perfil de prueba") puede cambiar el título de este perfil a "perfil de prueba" en el resultado, que es especialmente útil cuando los procesos de perfil múltiples se ejecutan simultáneamente. El significado de cada columna en el resultado del perfil específico es:
1. Función. Nombre de la función.
2. llamas. Número de llamadas. Por ejemplo, en el ejemplo anterior, la función Dosubtaska () se ejecuta dos veces.
3. porcentaje. El porcentaje del tiempo consumido por esta función llama en el tiempo general.
4. Excluyendo el tiempo necesario para llamar a otras funciones, la cantidad de tiempo tomada por la función misma. Por ejemplo, en el ejemplo anterior, dotask () indudablemente tardó mucho tiempo en ejecutarse, pero debido a que tardó todo el tiempo en llamar a otras funciones, no tomó mucho tiempo, solo 0.097 ms.
5. Tiempo. En contraste con el tiempo propio, el cálculo total que consumen mucho tiempo de la función no se considera al llamar a los factores a otras funciones. En el ejemplo anterior, la función dotask () ejecuta 101.901ms. Por tiempo y tiempo propio, también puede sacar una conclusión: si el tiempo es más grande que el tiempo propio, entonces la llamada a otras funciones está involucrada en la función.
6.avg. La fórmula de cálculo es: avg = tiempo/llamadas. En el ejemplo anterior, la función Dosubtaska () se ejecutó dos veces, y su tiempo total fue de 1.054 ms, por lo que su tiempo total promedio fue de 0.527 ms.
7.min. Lento mínimo para llamar a esta función. Por ejemplo, en el ejemplo anterior, la función Dosubtaska () se ejecuta dos veces, y su tiempo mínimo que requiere tiempo es que la llamada que lleva menos tiempo para gastar 0.016 ms.
8.Max. El tiempo máximo para llamar a esta función. Por ejemplo, en el ejemplo anterior, la función Dosubtaska () se ejecutó dos veces, y su proceso máximo que consume tiempo es que la llamada que tardó más en gastar 1.038 ms.
9. File. El archivo js donde se encuentra la función.
Uso de botones de perfil en Firebug
Además de insertar la instrucción Console.Profile () en el código JavaScript, Firebug también proporciona un botón de perfil para dinámicamente y en el código JavaScript de perfil en tiempo real en la página. La posición del botón es:
Cuando se requiere un perfil, puede presionar el botón, y si la operación de página siguiente desencadena cualquier código JavaScript, Firebug lo registrará. Al final del proceso de perfil, simplemente presione el botón nuevamente. El resultado final es consistente con el resultado obtenido al insertar la instrucción Console.Profile ().