Was ist "(Programm)" im Chrome-Debugger-Profiler?

Antworten:

95

(program)ist Chrome selbst, die Wurzel des Baums, der den gesamten anderen Code aufruft ... es ist da, weil der Sprung von nativem Code zu JavaScript, das Laden von Ressourcen usw. irgendwo beginnen muss :)

Beispiele für die Baumansicht finden Sie in den Dokumenten des Chrome-Entwicklertools .

Nick Craver
quelle
43
ah - wenn das ein hoher Prozentsatz ist, kann ich dann etwas dagegen tun?
Hvgotcodes
2
@hvgotcodes - Es scheint der Prozentsatz aller unten aufgeführten Teile zu sein. Wenn der Selbstanteil hoch ist, können Sie nicht viel tun ... es sei denn, Ihr Markup ist im Allgemeinen sehr hoch.
Nick Craver
1
Wissen Sie bitte, wie Sie im Abschnitt "(Programm)" auf Code zugreifen können? Irgendwie landen Teile von JavaScript in dem Projekt, an dem ich gerade arbeite, dort, und die einzige Möglichkeit, im Debugger dorthin zu gelangen, besteht darin, "debugger" zu platzieren. in den Code, der nicht ganz bequem ist.
Jaroslav Záruba
6
Ich denke, das ist tatsächlich falsch und die Antwort von @ user1009908 ist richtig. Es ist nicht die Wurzel, sondern der native Code. Dies wird durch die Tatsache unterstützt, dass das Beispiel für die Baumansicht es nicht als Stamm anzeigt.
Studgeek
3
In Bezug auf einen hohen Prozentsatz von program () führen CSS-Animationen manchmal zu einer hohen CPU-Auslastung, die sich in program () widerspiegelt. Leider kann der Profiler nicht helfen, die Quelle zu lokalisieren.
ılǝ
31

Ich glaube, (Programm) ist nativer Code, nicht die Wurzel des Baumes.

Siehe diesen Thread:

https://bugs.webkit.org/show_bug.cgi?id=88446

Also eher wie Systemaufrufe als wie main ().

Anscheinend beinhaltet es Leerlaufzeit. Einige Profile von (program) sind auch unter chrome: // profiler / verfügbar

user1009908
quelle
7
Einverstanden - aber nur ein Update: Es enthält keine Leerlaufzeit mehr. Das wird jetzt separat als (Leerlauf) gemeldet
Gio
15

Wie @Nick sagt, muss es irgendwo anfangen.

Es sieht so aus, als ob der CPU Profiler-Teil wie so viele andere Profiler ist, die auf denselben Konzepten wie gprof basieren .

Zum Beispiel ist self fast eine nutzlose Zahl, es sei denn, in einem Code, den Sie bearbeiten können, befindet sich so etwas wie eine Blasensorte einer großen Anzahl von Zahlen. Sehr unwahrscheinlich.

Total sollte Callees enthalten, das ist also nützlicher. Sofern während der blockierten Zeit sowie während der Laufzeit keine Proben entnommen werden, ist dies mit Ausnahme von vollständig an die CPU gebundenen Programmen immer noch ziemlich nutzlos.

Sie erhalten diese Statistiken nach Funktion und nicht nach Codezeile. Das bedeutet (wenn Sie sich auf Total Prozent verlassen könnten ), dass eine Funktion so viel kostet, in dem Sinne, dass, wenn Sie es irgendwie dazu bringen könnten, keine Zeit in Anspruch zu nehmen, z. B. durch Stubben, dieses Prozent ist, wie viel Zeit Sie sparen würden.

Wenn Sie sich also auf eine kostspielige Funktion konzentrieren möchten, müssen Sie darin nach dem suchen, was optimiert werden könnte. Dazu müssen Sie wissen, wie die Zeit auf die Codezeilen in der Funktion aufgeteilt ist. Wenn Sie Kosten auf Codebasis hätten, würden Sie direkt zu diesen Zeilen gelangen.

Ich weiß nicht, ob Sie in der Lage sein werden, einen besseren Profiler zu erhalten, wie einen Wanduhr-Stack-Sampler, der auf Zeilenebene berichtet, wie z. B. Zoom . So mache ich es .

Mike Dunlavey
quelle
@hvgotcodes: Nicht sicher. Ich benutze sie nicht, weil ich nur Stackshots in einem Debugger mache. Aber du bist unter Linux, oder? Können Sie eine Testversion von Zoom erhalten? Es ist sehr gut.
Mike Dunlavey
@hvgotcodes: Nun, die einzige Hilfe, die ich anbieten kann, ist die Methode, auf die ich mich verlasse.
Mike Dunlavey