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

CoolUserName
fonte
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.

duskwuff -inactive-
fonte
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

JSON C11
fonte