Ich habe die Funktionsnamen/Aufrufe in dieser Frage minimiert und anonymisiert (und dementsprechend das Bild retuschiert). Die tatsächlichen Namen und die Anrufstapeltiefe sollten für die Beantwortung dieser Frage keine Rolle spielen.Wie interpretiere ich die JS Profiling Timeline von Chrome?
Ich versuche, einen Engpass in einer Webanwendung mithilfe von Google Chrome-Timeline zu finden. Ich bin mir jedoch nicht sicher, wie ich die nach der Aufnahme einer Timeline angezeigten Daten interpretiere.
Zum Beispiel verwende ich die folgende Funktion:
function obj.a = function (x, y) {
console.log('a(' + x + ', ' + y + ')');
return x.getNested().b(y);
};
Nachdem es Profilierung, die Flamme-Chart und das Ereignisprotokoll, als ob console.log
und b
scheinen wurden von a
mehr als einmal aufgerufen. Zum Beispiel sieht das Ereignisprotokoll wie folgt aus:
Andere Anrufungen von a
erscheinen (zufällig?) Verfügen sogar über mehr verschachtelte Anrufungen von b
und log
.
Die offizielle Dokumentation wie How to use the timeline tool nur wenig hilfreich Aussagen wie
bietet Wenn die JS-Profiler aktiviert ist, Ihre Flamme Tabelle zeigt jede JavaScript-Funktion, die aufgerufen wurde.
So wie die JS Profilinformationen angezeigt om der Timeline Panel soll zu lesen und um herauszufinden, interpretiert werden, welche Funktionsaufruf erfordert, wie viel Zeit?
Gute Punkte dort. Es gibt V8-Optimierungen, z. B. Inlining, die sich auch auf die Darstellung auswirken können. Es ist ein guter Arbeitsablauf, mit einem Sampling-Profiler zu beginnen, um eine allgemeine aggregierte Ansicht von Leistungsproblemen zu erhalten, und dann strukturelles Profiling mit 'console.time' /' console.timeEnd' mit 'chrome: // tracing' für Regionen von Ausführung. –