Diferença entre 'self' e 'total' no perfil de CPU do Chrome de JS


229

Qual é a diferença entre as colunas 'self' e 'total' no perfil da CPU do Chrome do código JS?

insira a descrição da imagem aqui


13
O tempo de autoatendimento quase nunca é útil em softwares sérios, porque quase todo o tempo é gasto em chamar sistema / biblioteca / DB / IO etc., portanto, o contador do programa gasta muito pouco tempo real, como porcentagem, no seu código, a menos que você passa a escrever algum tipo de loop apertado. Pode dizer que muito é usado nas rotinas do sistema, mas isso não é bom. Você precisa saber qual parte do seu código gasta muito tempo.
Mike Dunlavey

Se uma função estiver bloqueando chamando o objeto interno (como envio XMLHttpRequest não assíncrono), o tempo de autoatendimento pode ser muito útil. Nesses casos, essas funções, embora sejam gargalos, podem não aparecer no topo das medições de tempo total.
Konstantin

Respostas:


303

self é quanto tempo foi gasto trabalhando diretamente nessa função.

total é quanto tempo foi gasto nessa função e nas funções que chamou.


11
então o self seria apenas declarações inline e não chamadas de função? E total é todo o código em execução dentro da chamada?
CoolUserName

42
Aliás, como as pessoas parecem encontrar uma resposta útil: isso é verdade para os criadores de perfil em geral, não apenas no Chrome.
duskwuff -inactive-

2
O que aconteceria se uma função se chama recursivamente? como você o leria corretamente então?
David Limkys

3
O link Documentos está aqui (na seção 'Visualizar detalhes da função') . Self time: Quanto tempo levou para concluir a chamada atual da função, incluindo apenas as instruções na própria função, sem incluir as funções que ela chamou. Total time: O tempo que levou para concluir a chamada atual desta função e de todas as funções que ela chamou.
Iman Mahmoudinasab

E qual é a semântica da porcentagem que agora é mostrada ao longo de valores próprios e de tempo total? Quero dizer, é uma porcentagem do que em quê?
Jayarjo

10

Tempo próprio: para uma função, é a quantidade de tempo para executar o código dentro da função (instruções em linha). A verificação do desempenho de funções individuais é conhecida como análise de baixo para cima.

Tempo total: para uma função, é o tempo próprio dessa função e o tempo próprio de todas as funções que a função chama. Verificar o desempenho das funções junto com seus calendários é uma análise de cima para baixo.

NB: Só porque uma função tem um alto tempo de autoatendimento, não significa que a função em si seja ineficiente. Também é importante observar quantas vezes essa função está sendo chamada.

Artigo de Intel

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.