Qu'est-ce que «(programme)» dans le profileur du débogueur Chrome?

Réponses:

95

(program)est Chrome lui-même, la racine de l'arborescence appelant tous les autres codes ... il est là parce que le passage du code natif au JavaScript, le chargement des ressources, etc. doit commencer quelque part :)

Vous pouvez voir des exemples de l'arborescence dans la documentation de l'outil de développement Chrome .

Nick Craver
la source
43
ah - donc si c'est un pourcentage élevé, y a-t-il quelque chose que je puisse faire à ce sujet?
hvgotcodes
2
@hvgotcodes - Cela semble être le pourcentage de toutes les parties ci-dessous. Maintenant , si l' auto pourcentage est élevé, il n'y a pas grand - chose que vous pouvez faire .... à moins que votre balisage en général est très lourd.
Nick Craver
1
Savez-vous comment accéder au code dans la section "(programme)"? D'une manière ou d'une autre, des parties de JavaScript dans le projet sur lequel je travaille actuellement se retrouvent là-bas, et la seule façon d'y arriver dans le débogueur est de placer "debugger;" dans le code, ce qui n'est pas tout à fait confortable.
Jaroslav Záruba
6
Je pense que c'est en fait faux et la réponse de @ user1009908 est correcte. Ce n'est pas la racine, son code natif. Le est pris en charge par le fait que l'exemple de l'arborescence ne l'affiche pas en tant que racine.
studgeek
3
En ce qui concerne le pourcentage élevé de programme (), les animations css entraînent parfois une utilisation élevée du processeur, ce qui sera reflété dans program (). Malheureusement, le profileur ne peut pas aider à identifier la source.
ılǝ
31

Je crois que (programme) est du code natif, pas la racine de l'arbre.

Voir ce fil:

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

Donc, plus comme des appels système que comme main ().

Apparemment, cela inclut les temps morts. De plus, certains profils de (programme) sont disponibles à partir de chrome: // profiler /

user1009908
la source
7
D'accord - mais juste une mise à jour: cela n'inclut plus le temps d'inactivité. Cela est maintenant signalé séparément comme (inactif)
Gio
15

Comme le dit @Nick, cela doit commencer quelque part.

Il semble que la partie CPU Profiler ressemble à tant d'autres profileurs basés sur les mêmes concepts que gprof .

Par exemple, self est presque un nombre inutile à moins qu'il n'y ait quelque chose comme une sorte de bulle d'un grand tableau de nombres dans un code que vous pouvez modifier. Hautement improbable.

Le total devrait inclure les appels, donc c'est plus utile. Cependant, à moins que des échantillons ne soient prélevés pendant le temps bloqué ainsi que pendant le temps d'exécution, il est encore assez inutile sauf pour les programmes totalement liés au processeur.

Il vous donne ces statistiques par fonction, plutôt que par ligne de code. Cela signifie (si vous pouviez vous fier au pourcentage total ) qu'une fonction coûte autant, en ce sens que si vous pouviez en quelque sorte la faire prendre zéro temps, par exemple en la stubbing, ce pourcentage est le temps que vous gagneriez.

Donc, si vous voulez vous concentrer sur une fonction coûteuse, vous devez y chercher ce qui pourrait être optimisé. Pour ce faire, vous devez savoir comment le temps est divisé entre les lignes de code de la fonction. Si vous aviez le coût par ligne de code, cela vous mènerait directement à ces lignes.

Je ne sais pas si vous pourrez obtenir un meilleur profileur, comme un échantillonneur de pile d'horloge murale rapportant au niveau de la ligne, tel que Zoom . Voici comment je fais .

Mike Dunlavey
la source
@hvgotcodes: Je ne sais pas. Je ne les utilise pas, car je prends juste des stackshots dans un débogueur. Mais vous êtes sous Linux, non? Pouvez-vous obtenir une copie d'essai de Zoom? C'est plutôt bon.
Mike Dunlavey
@hvgotcodes: Eh bien, la seule aide que je peux offrir est la méthode sur laquelle je compte.
Mike Dunlavey