O que é "(programa)" no profiler do depurador do Chrome?

Respostas:

95

(program)é o próprio Chrome, a raiz da árvore que chama todos os outros códigos ... está lá porque o salto do código nativo para o JavaScript, o carregamento de recursos etc. deve começar em algum lugar :)

Você pode ver exemplos da visualização em árvore nos documentos da ferramenta de desenvolvedor do Chrome .

Nick Craver
fonte
43
ah - então, se esse é um percentual alto, há algo que eu possa fazer?
Hvgotcodes 03/10/10
2
@hvgotcodes - Parece ser a porcentagem de todas as partes abaixo. Agora, se a porcentagem de auto é alta, não há muito o que fazer ... a menos que sua marcação em geral seja muito pesada.
Nick Craver
1
Você sabe como acessar o código na seção "(programa)"? De alguma forma, partes do JavaScript no projeto em que estou trabalhando acabam lá, e a única maneira de chegar lá no depurador é colocando "debugger"; no código, o que não é muito confortável.
Jaroslav Záruba
6
Acho que isso está realmente errado e a resposta do @ user1009908 está correta. Não é a raiz, é o código nativo. O é suportado pelo fato de que o exemplo de exibição em árvore não o mostra como raiz.
studgeek
3
Em relação à alta% de program (), às vezes as animações em css levam a um alto uso da CPU, que será refletido no programa (). Infelizmente, o criador de perfil não pode deixar de apontar a fonte.
ılǝ
31

Eu acredito que (programa) é um código nativo, não a raiz da árvore.

Veja este tópico:

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

Portanto, mais como chamadas de sistema do que como main ().

Aparentemente, inclui tempo ocioso. Além disso, alguns perfis de (programa) estão disponíveis no chrome: // profiler /

user1009908
fonte
7
Concordo - mas apenas uma atualização: ela não inclui mais o tempo ocioso. Agora, isso está sendo relatado separadamente como (inativo) #
Gio
15

Como o @Nick diz, tem que começar em algum lugar.

Parece que a parte CPU Profiler é como muitos outros criadores de perfil que são baseados nos mesmos conceitos do gprof .

Por exemplo, self é quase um número inútil, a menos que haja algo como uma espécie de bolha de uma grande variedade de números em algum código que você possa editar. Altamente improvável.

O total deve incluir callees, para que seja mais útil. No entanto, a menos que amostras sejam coletadas durante o tempo bloqueado e durante o tempo de execução, ele ainda será bastante inútil, exceto para programas totalmente vinculados à CPU.

Ele fornece essas estatísticas por função, e não por linha de código. Isso significa (se você puder confiar no percentual total ) que uma função custa muito, no sentido de que, de alguma forma, você consiga levar tempo zero, como por stubbing, esse percentual é quanto tempo você economizaria.

Portanto, se você deseja se concentrar em uma função dispendiosa, precisa procurar nela o que poderia ser otimizado. Para fazer isso, você precisa saber como o tempo é subdividido entre as linhas de código na função. Se você tivesse custado uma linha de código, isso levaria você diretamente a essas linhas.

Não sei se você conseguirá um perfil melhor, como um amostrador de pilha de relógio de parede relatando no nível da linha, como o Zoom . Aqui está como eu faço .

Mike Dunlavey
fonte
@hvgotcodes: Não tenho certeza. Eu não os uso, porque apenas tiro stacks em um depurador. Mas você está no Linux, certo? Você pode obter uma cópia de avaliação do Zoom? É muito bom.
Mike Dunlavey
@ hvgotcodes: Bem, então, a única ajuda que posso oferecer é o método em que confio.
Mike Dunlavey