Lorsque vous écrivez un programme JavaScript, si vous avez besoin de connaître le temps d'exécution d'un certain code, vous pouvez utiliser Console.Time (). Cependant, lors de l'analyse des programmes JavaScript avec une logique plus complexe et de la recherche d'étranglements de performances, Console.Time () n'est pas applicable - une analyse approfondie du fonctionnement des programmes JavaScript avec une logique plus complexe signifie l'insertion d'un grand nombre d'instructions Console.Time (), qui est sans aucun doute inacceptable. Pour le réglage du programme JavaScript avec une logique complexe, la bonne façon est d'utiliser console.profile ().
Support de navigateur
Firefox, Google Chrome et Safari, qui ont installé le plugin Firebug, toutes les instructions Console.Profile () de prise en charge, et les dernières versions d'IE et d'opéra fournissent également des fonctions de profil. L'utilisation de console.profile () sur plusieurs navigateurs majeurs est similaire. Cet article ne présente que l'utilisation de Console.Profile () dans Firebug. Une chose à noter est que si vous utilisez la console Firebug pour écrire directement le code expérimental JavaScript, console.profile () n'est pas valide.
Utilisation de console.profile ()
L'utilisation de console.profile () est très simple: insérer console.profile () où vous devez démarrer le profil et insérer console.profileend () où vous terminez le profil. Le code suivant est un exemple:
La copie de code est la suivante:
fonction dotAsk () {
Dosubtaska (1000);
Dosubtaska (100000);
DosubTaskB (10000);
DosubTaskC (1000,10000);
}
fonction dosubtaska (count) {
pour (var i = 0; i <count; i ++) {}
}
fonction dosubtaskb (count) {
pour (var i = 0; i <count; i ++) {}
}
Fonction DosubTaskc (countx, comté) {
pour (var i = 0; i <countx; i ++) {
pour (var j = 0; j <comté; j ++) {}
}
}
console.profile ();
dotask ();
console.profileend ();
Exécuter console.profile () avant d'exécuter la fonction dotask (). Une fois la fonction dotask () terminée, les informations détaillées pendant le processus en cours d'exécution de la fonction dotask () peuvent être collectées. Vous pouvez voir dans la console de Firebug:
D'après les résultats, nous pouvons voir que le temps de profil est de 101,901 ms au total, impliquant 5 appels de fonction. Le titre par défaut du résultat est "Profile", qui peut être personnalisé en transmettant les paramètres à la fonction console.profile (). Par exemple, l'utilisation de Console.Profile ("Profil de test") peut modifier le titre de ce profil en "Profil de test" dans le résultat, ce qui est particulièrement utile lorsque plusieurs processus de profil sont exécutés simultanément. La signification de chaque colonne dans le résultat de profil spécifique est:
1. Fonction. Nom de la fonction.
2.Calls. Nombre d'appels. Par exemple, dans l'exemple ci-dessus, la fonction DosubTaska () est exécutée deux fois.
3.Percent. Le pourcentage du temps consommé par cette fonction appelle dans l'ensemble.
4. Temps. À l'exclusion du temps pris pour appeler d'autres fonctions, le temps pris par la fonction elle-même. Par exemple, dans l'exemple ci-dessus, dotask () a sans aucun doute pris beaucoup de temps à exécuter, mais parce qu'il a fallu tout le temps pour appeler d'autres fonctions, cela n'a pas pris beaucoup de temps, seulement 0,097 ms.
5. temps. Contrairement à son temps, le calcul total de la fonction est pris en compte lors des facteurs d'appel à d'autres fonctions. Dans l'exemple ci-dessus, la fonction dotask () exécute 101.901ms. Pour le temps et le temps, vous pouvez également tirer une conclusion: si le temps est plus grand que le temps, l'appel à d'autres fonctions est impliqué dans la fonction.
6.AVG. La formule de calcul est: avg = temps / appels. Dans l'exemple ci-dessus, la fonction DosubTaska () a été exécutée deux fois, et son temps total était de 1,054 ms, donc son temps total moyen était de 0,527 ms.
7.min. Minimum qui prend du temps pour appeler cette fonction. Par exemple, dans l'exemple ci-dessus, la fonction DosubTaska () est exécutée deux fois, et son temps minimum prend le temps que l'appel qui prend moins de temps pour passer 0,016 ms.
8.max. Le temps maximum pour appeler cette fonction. Par exemple, dans l'exemple ci-dessus, la fonction DosubTaska () a été exécutée deux fois, et son processus maximal prend du temps est que l'appel qui a pris plus de temps pour passer 1,038 ms.
9.File. Le fichier js où se trouve la fonction.
Utilisation des boutons de profil dans Firebug
En plus d'insérer des instructions Console.Profile () dans le code JavaScript, Firebug fournit également un bouton de profil pour dynamiquement et en temps réel le code JavaScript dans la page. La position du bouton est:
Lorsqu'un profil est requis, vous pouvez appuyer sur le bouton, et si le fonctionnement de la page suivante déclenche un code JavaScript, Firebug l'enregistrera. À la fin du processus de profil, appuyez à nouveau sur le bouton. Le résultat final est cohérent avec le résultat obtenu en insérant l'instruction Console.Profile ().