Heim  >  Artikel  >  Web-Frontend  >  Detaillierte Einführung in die Funktion console.profile() in JavaScript_Javascript-Kenntnissen

Detaillierte Einführung in die Funktion console.profile() in JavaScript_Javascript-Kenntnissen

WBOY
WBOYOriginal
2016-05-16 16:23:451467Durchsuche

Wenn Sie beim Schreiben eines JavaScript-Programms die Ausführungszeit eines bestimmten Codeabschnitts kennen müssen, können Sie console.time() verwenden. Bei der Analyse von JavaScript-Programmen mit komplexerer Logik und dem Versuch, Leistungsengpässe zu finden, ist console.time() jedoch nicht anwendbar. Eine eingehende Analyse der Funktionsweise von JavaScript-Programmen mit komplexerer Logik erfordert das Einfügen einer großen Anzahl von console.time( ) Aussage, die zweifellos inakzeptabel ist. Für die Optimierung von JavaScript-Programmen mit komplexer Logik ist die Verwendung von console.profile() die richtige Methode.

Browser-Unterstützung

Firefox, Google Chrome und Safari mit installiertem Firebug-Plug-in unterstützen alle die console.profile()-Anweisung. Die neuesten Versionen von IE und Opera bieten auch die Profile-Funktion. Die Verwendung von console.profile() ist in mehreren gängigen Browsern ähnlich. In diesem Artikel wird nur die Verwendung von console.profile() in Firebug vorgestellt. Beachten Sie, dass console.profile() ungültig ist, wenn Sie die Firebug-Konsole zum direkten Schreiben von JavaScript-Experimentcode verwenden.

Verwendung von console.profile()

Die Verwendung von console.profile() ist sehr einfach: Fügen Sie console.profile() dort ein, wo Sie das Profil starten müssen, und fügen Sie console.profileEnd() dort ein, wo Sie das Profil beenden möchten. Nehmen Sie den folgenden Code als Beispiel:

Code kopieren Der Code lautet wie folgt:

Funktion doTask(){
doSubTaskA(1000);
doSubTaskA(100000);
doSubTaskB(10000);
doSubTaskC(1000,10000);
}
Funktion doSubTaskA(count){
for(var i=0;i }

Funktion doSubTaskB(count){
for(var i=0;i }

Funktion doSubTaskC(countX,countY){
for(var i=0;i for(var j=0;j }
}

console.profile();
doTask();
console.profileEnd();

Führen Sie console.profile() aus, bevor Sie die Funktion doTask() ausführen, und führen Sie console.profileEnd() aus, nachdem die Funktion doTask() abgeschlossen ist. Auf diese Weise können detaillierte Informationen während des Betriebs der Funktion doTask() ermittelt werden gesammelt. Sie können dies in der Firebug-Konsole sehen:

Wie Sie den Ergebnissen entnehmen können: Diese Profilzeit betrug insgesamt 101,901 ms, einschließlich 5 Funktionsaufrufen. Der Standardtitel der Ergebnisse lautet „Profil“, der durch Übergabe von Parametern an die Funktion console.profile() angepasst werden kann. Beispielsweise kann die Verwendung von console.profile("Test Profile") den Titel des Profils in den Ergebnissen in "Test Profile" ändern, was besonders nützlich ist, wenn mehrere Profilprozesse gleichzeitig ausgeführt werden. Die Bedeutung jeder Spalte in den spezifischen Profilergebnissen ist:

1.Funktion. Funktionsname.
2. Anrufe. Anzahl der Anrufe. Im obigen Beispiel wird beispielsweise die Funktion doSubTaskA() zweimal ausgeführt.
3.Prozent. Der Prozentsatz der Gesamtzeit, die für diesen Funktionsaufruf aufgewendet wurde.
4. Eigene Zeit. Ohne die Zeit, die für den Aufruf anderer Funktionen aufgewendet wird, ist dies die Zeit, die die Funktion selbst benötigt. Im obigen Beispiel dauert die Ausführung von doTask() beispielsweise zweifellos lange, aber da die gesamte Zeit für den Aufruf anderer Funktionen aufgewendet wird, beträgt die Zeit selbst nicht viel, nur 0,097 ms.
5.Zeit. Im Gegensatz zu Own Time wird die Gesamtzeit einer Funktion berechnet, ohne Aufrufe anderer Funktionen zu berücksichtigen. Im obigen Beispiel wurde die Funktion doTask() 101,901 ms lang ausgeführt. Bezüglich Time und Own Time können wir auch eine Schlussfolgerung ziehen: Wenn Time größer als Own Time ist, dann beinhaltet die Funktion Aufrufe anderer Funktionen.
6.Durchschn. Berechnen Sie die durchschnittliche Gesamtzeit, die eine Funktion benötigt. Die Berechnungsformel lautet: Avg=Time/Calls. Im obigen Beispiel wird die Funktion doSubTaskA() zweimal ausgeführt und ihr Gesamtzeitverbrauch beträgt 1,054 ms, sodass ihr durchschnittlicher Gesamtzeitverbrauch 0,527 ms beträgt.
7.Min. Die Mindestzeit, die zum Aufrufen dieser Funktion erforderlich ist. Im obigen Beispiel wurde beispielsweise die Funktion doSubTaskA() zweimal ausgeführt, und ihr minimaler Zeitaufwand, d. h. der weniger zeitaufwändige Aufruf, dauerte 0,016 ms.
8.Max. Die maximal erforderliche Zeit zum Aufrufen dieser Funktion. Im obigen Beispiel wurde beispielsweise die Funktion doSubTaskA() zweimal ausgeführt, und ihr maximaler Zeitaufwand, d. h. der zeitaufwändigere Aufruf, dauerte 1,038 ms.
9.Datei. Die JS-Datei, in der sich die Funktion befindet.

Verwenden der Profilschaltfläche in Firebug

Zusätzlich zum Einfügen der console.profile()-Anweisung in den JavaScript-Code bietet Firebug auch eine Profilschaltfläche, um den JavaScript-Code auf der Seite in Echtzeit dynamisch zu profilieren. Die Position der Schaltfläche lautet:

Wenn Sie ein Profil erstellen müssen, können Sie auf diese Schaltfläche klicken. Wenn der nachfolgende Seitenvorgang einen JavaScript-Code auslöst, zeichnet Firebug dies auf. Am Ende des Profilierungsvorgangs drücken Sie einfach erneut die Taste. Das Endergebnis stimmt mit dem Ergebnis überein, das durch Einfügen der Anweisung console.profile() erhalten wurde.

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn