Perfilador de Scripts

*Este conteúdo é traduzido por IA (Beta) e pode conter erros. Para ver a página em inglês, clique aqui.

Perfilador de Scripts é uma ferramenta dentro do Console do Desenvolvedor que permite que você grave sessões de perfil de todos os scripts em execução e visualize seus custos de tempo de CPU com configurações de gravação e exibição personalizadas.Ela pode registrar todos os tipos de chamadas de função, incluindo chamadas de funções, chamadas de método e acessos de propriedade.Esta ferramenta é útil para identificar scripts que ocupam a maior parte dos recursos de CPU e retardam o performance.

Sessões de perfis de registro

Antes de gravar, você precisa selecionar o ambiente de gravação de:

  • Cliente (Padrão) — Grava scripts do lado do cliente, incluindo LocalScripts e Scripts com RunContext definido para Client .
  • Servidor — Registra scripts do lado do servidor, incluindo Scripts com RunContext definido para Server ou Legacy .O Perfilador de Script remove todos os dados coletados do lado do servidor no final de cada sessão.

Você também pode definir as seguintes opções de gravação:

ComporteOpçõesPadrãoDescrição
Frequência1000 vezes por segundo (1 KHz)10,000 vezes por segundo (10 KHz)1 KHzA frequência de 10 KHz tem maior precisão, pois o Perfilador de Script pode não capturar chamadas da API que executam com mais frequência do que a frequência selecionada, mas também tem um custo de desempenho maior.
Duração da sessão1-minuto5-minuto10-minutoManualMãoualA opção manual requer que você pare de gravar manualmente.
Comportamento de Votação Ao VivoDesligadoDesligadoEste comportamento pesquisa e atualiza dados de perfil a cada segundo durante uma sessão de perfil.

Para registrar uma nova sessão de perfilamento:

  1. Expanda o menu de ferramentas para selecionar ScriptProfiler .

    Dropdown menu of all Developer Console tools with the ScriptProfiler option highlighted for selection.
  2. Expand the client-server dropdown to selecionar Cliente ou Servidor .

    Dropdown menu with Client and Server options for selection.
  3. (Opcional) Verifique a caixa de seleção Ao vivo para habilitar o comportamento de pesquisa ao vivo.

  4. (Opcional) Selecione Freq e Time para escolher a frequência de gravação e o tempo da sessão se você não quiser usar os valores padrão.

  5. Clique em Iniciar para iniciar a sessão de perfilamento.Se você definir um período, o Perfilador de Scripts exibe um cronômetro de contagem regressiva com o tempo restante na sessão.

  6. Clique em Parar ou espere até que a gravação termine para exibir os dados de perfilamento.

Leia dados de perfuração

Depois que uma sessão é interrompida, o Perfilador de Scripts gera uma tabela mostrando quanto tempo cada chamada de função custa em tempo de CPU.A função de classificação de tabela classifica as chamadas de funções mais tempo gasto para menos tempo gasto e permite que você procure funções específicas por seu nome.Ele fornece as seguintes duas visualizações:

  • Callgraph (Padrão): Classifica e exibe chamadas de função em uma estrutura de árvore com base em tarefas de quadro.Esta visão exibe cada categoria de tarefa como nós sob a mesma raiz e permite que você as expanda para ver funções.Você também pode pasar o mouse sobre qualquer nó na árvore para ver informações de arquivo e linha.Por exemplo, Stepped/CameraInput/<anonymous> pode revelar Players.[LocalPlayer].PlayerScripts.PlayerModule.CameraModule.CameraInput:125 . Example callgraph view of a profiling session.
  • Funções : Lista todas as funções sem categorizá-las por tarefas. Example functions view of a profiling session.

Você também pode selecionar das seguintes opções de exibição para personalizar suas necessidades de depuração:

Qual o nomeOpçõesPadrãoDescrição
UnidadeMilisegundos (ms)Percentagem (%)msMostra o tempo gasto em cada chamada da API em milisegundos ou porcentagens da sessão de gravação total.
MédioDesligado1-segundo1-minuto5-minuto10-minutoDesligadoCalcula o tempo médio gasto em cada chamada da API pelo valor selecionado.Se você selecionar uma opção que seja maior que o tempo da sessão, o perfilador de scripts extrapola o tempo da sessão para calcular a média.Por exemplo, você pode selecionar a opção de 5 minutos para uma sessão de 1 minuto para ver o valor médio esperado se você executar o código por 5 minutos.

Exportar dados de perfuração

O Perfilador de Script permite que você exporte dados de perfil gravados como um arquivo JSON. Para exportar dados gravados após uma sessão de perfil:

  1. Na janela Perfilador de Scripts, clique em Exportar .

  2. Na janela de exportação, selecione a sessão de perfil que você deseja exportar. Renomeie o nome do arquivo padrão se quiser definir um nome personalizado.

  3. Clique em Exportar para salvar o arquivo JSON.

    Example export window.

O arquivo JSON exportado inclui os seguintes campos:

  • Versão : O número da versão.
  • Tempo de Início de Sessão : Um timestamp em milisegundos que registra o tempo de início da sessão.
  • Tempo de término da sessão : Um timestamp em milisegundos que registra o tempo de término da sessão.
  • Categorias : Um conjunto de categorias de tarefas de quadro registradas na sessão de perfil. Cada entrada inclui:
    • Nome : O nome de cada categoria de tarefa de quadro.
    • NodeId : O identificador exclusivo de uma categoria de tarefa (nó).É um índice baseado em 1 no Nodes.Por exemplo, você pode pesquisar o nó com o NodeId de 123 recuperando o elemento 123º em Nodes .
  • Nós : Um conjunto de nós registrados na sessão de perfilamento. Cada entrada inclui:
    • Duração Total : A quantidade de tempo que o nó custa em tempo de CPU em microsegundos.
    • FunctionIds : Um array de identificadores exclusivos de funções.
    • NodeIds : Um array de IDs de Nó.
  • Funções : Um conjunto de funções registradas na sessão de perfisamento.
    • Duração Total : A quantidade de tempo que a função custa em tempo de CPU em microsegundos.
    • Nome : O nome da função, se disponível.
    • Fonte: A fonte da função, se disponível.
    • Linha : O número da linha da função, se disponível.
    • Bandeiras : Um campo de bits que indica qualquer ambiente de execução de função específica. Atualmente pode ter os seguintes valores:
      • 0 : O 0º bit representa IsNative para execução sob Native CodeGen.
      • 1 : O 1º bit representa IsPlugin para execução como parte de um plugin.
Exemplo de Dados de Perfil Exportados

{
"Version":2,
"SessionStartTime":1704850750514,
"SessionEndTime":1704850751198,
"Categories":
[
{"Name":"Parallel Luau","NodeId":4},
{"Name":"Heartbeat","NodeId":1}
],
"Nodes":
[
{"TotalDuration":2530,"FunctionIds":[1],"NodeIds":[2]},
{"TotalDuration":2530,"FunctionIds":[2,5],"NodeIds":[3,7]},
{"TotalDuration":1267},
{"TotalDuration":7746,"FunctionIds":[3],"NodeIds":[5]},
{"TotalDuration":7746,"FunctionIds":[4],"NodeIds":[6]},
{"TotalDuration":7746},
{"TotalDuration":1263,"FunctionIds":[6],"NodeIds":[8]},
{"TotalDuration":1263,"FunctionIds":[7],"NodeIds":[9]},
{"TotalDuration":1263,"FunctionIds":[8],"NodeIds":[10]},
{"TotalDuration":1263}
],
"Functions":
[
{"Name":"main","TotalDuration":2530},
{"Source":"builtin_ManageCollaborators.rbxm.ManageCollaborators.Packages._Index.roblox_rodux-3.0.0.rodux.Store","Line":81,"TotalDuration":1267},
{"Name":"Script","TotalDuration":7746},
{"Source":"Workspace.Actor.Script","Line":1,"TotalDuration":7746},
{"Source":"builtin_DeveloperInspector.rbxm.DeveloperInspector.Packages._Index.DeveloperFramework.DeveloperFramework.UI.Components.Grid","Line":221,"TotalDuration":1263},
{"Source":"builtin_DeveloperInspector.rbxm.DeveloperInspector.Packages._Index.DeveloperFramework.DeveloperFramework.UI.Components.Grid","Name":"_update","Line":236,"TotalDuration":1263},
{"Source":"builtin_DeveloperInspector.rbxm.DeveloperInspector.Packages._Index.DeveloperFramework.DeveloperFramework.UI.Components.Grid","Name":"_getRange","Line":277,"TotalDuration":1263},
{"Source":"[C]","Name":"ScrollingFrame.CanvasPosition","TotalDuration":1263}
]
}