Unterschied zwischen 'self' und 'total' im Chrome-CPU-Profil von JS

229

Was ist der Unterschied zwischen den Spalten "self" und "total" in der Chrome-CPU-Profilerstellung für JS-Code?

Geben Sie hier die Bildbeschreibung ein

CoolUserName
quelle
13
Selbstzeit ist in seriöser Software fast nie nützlich, da fast die gesamte Zeit für den Aufruf von system / library / DB / IO usw. aufgewendet wird, sodass der Programmzähler nur sehr wenig tatsächliche Zeit in Prozent in Ihrem Code verbringt, es sei denn, Sie zufällig eine Art enge Schleife schreiben. Es könnte Ihnen sagen, dass in Systemroutinen viel verwendet wird, aber das nützt Ihnen nichts. Sie müssen wissen, welcher Teil Ihres Codes viel Zeit kostet.
Mike Dunlavey
Wenn eine Funktion durch Aufrufen eines integrierten Objekts blockiert wird (z. B. nicht asynchrones XMLHttpRequest-Senden), kann die Eigenzeit sehr nützlich sein. In solchen Fällen werden diese Funktionen zwar als Engpässe angezeigt, jedoch möglicherweise nicht am Anfang der Gesamtzeitmessungen angezeigt.
Konstantin

Antworten:

303

self ist, wie viel Zeit für die Arbeit direkt in dieser Funktion aufgewendet wurde.

total ist, wie viel Zeit in dieser Funktion und in den aufgerufenen Funktionen verbracht wurde.

Dämmerung -inaktiv-
quelle
11
Selbst wären also nur Inline-Anweisungen und keine Funktionsaufrufe? Und insgesamt wird der gesamte Code innerhalb des Aufrufs ausgeführt?
CoolUserName
42
Übrigens, da die Leute dies als nützliche Antwort zu betrachten scheinen: Dies gilt für Profiler im Allgemeinen, nicht nur für Chrome.
Abenddämmerung -inaktiv-
2
Was würde passieren, wenn sich eine Funktion rekursiv aufruft? Wie würden Sie es dann richtig lesen?
David Limkys
3
Der Link "Dokumente" befindet sich hier (im Abschnitt "Funktionsdetails anzeigen") . Self time: Wie lange es gedauert hat, den aktuellen Aufruf der Funktion abzuschließen, einschließlich nur der Anweisungen in der Funktion selbst, ohne die aufgerufenen Funktionen. Total time: Die Zeit, die benötigt wurde, um den aktuellen Aufruf dieser Funktion und aller aufgerufenen Funktionen abzuschließen.
Iman Mahmoudinasab
Und wie ist die Semantik des Prozentsatzes, der jetzt zusammen mit den Selbst- und Gesamtzeitwerten angezeigt wird? Ich meine, es ist ein Prozent von was in was?
Jayarjo
10

Self Time: Ist für eine Funktion die Zeit, die zum Ausführen von Code innerhalb der Funktion benötigt wird (Inline-Anweisungen). Die Überprüfung der Leistung einzelner Funktionen wird als Bottom-up-Analyse bezeichnet.

Gesamtzeit: Für eine Funktion ist die Selbstzeit dieser Funktion und die Selbstzeit aller Funktionen, die die Funktion aufruft. Die Überprüfung der Leistung von Funktionen zusammen mit ihren Callees erfolgt von oben nach unten.

NB: Nur weil eine Funktion eine hohe Eigenzeit hat, bedeutet dies nicht, dass die Funktion selbst ineffizient ist. Es ist auch wichtig zu prüfen, wie oft diese Funktion aufgerufen wird.

Artikel von Intel

JSON C11
quelle