Perfilador de Script

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

Script Profiler é uma ferramenta dentro da Console de Desenvolvedor que permite que você registre sessões de profilhamento de todos os scripts executando e veja seus custos de CPU com registros personalizados e configurações de exibição. Ele pode registrar todos os tipos de chamadas de função, incluindo chamadas de método, chamadas de propriedade e acessos de propriedade. Essa ferramenta é útil para identificar scripts que consomem a

Gravando Sessões de Perfil

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

  • Cliente (Padrão) — Registra scripts do lado do cliente, incluindo LocalScripts e Scripts com 0> Class.BaseScript.RunContext|RunContext0> definido como 3> Enum.RunContext.Client|Client 3>.
  • Servidor — Registra scripts do lado do servidor, incluindo Scripts com RunContext definido para 0> Enum.RunContext.Server|Server0> ou 3> Enum.RunContext.Legacy|Legacy 3>. O Profiler de Script limpa todos os dados coletados do lado

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

ComportamentoOpçõ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 mais precisão, pois o Script Profiler pode não detectar chamadas de API que são executadas com mais frequência que a sua frequência selecionada, mas também tem um custo de desempenho mais alto.
Comprimento da sessão1-minuto5-minuto10-minutoManualManualA opção manual requer que você pare de gravar manualmente.
Comportamento de Votação ao VivoDesligadoDesligadoEste comportamento coleta e atualiza dados de perfil a cada segundo durante uma sessão de perfil.

Para registrar uma nova sessão de perfil:

  1. Expanda o menu suspenso de ferramentas para selecionar ScriptProfiler .

    Dropdown menu of all Developer Console tools with the ScriptProfiler option highlighted for selection.
  2. Expanda o menu suspenso cliente-servidor para 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 a duração da sessão se você não quiser usar os valores padrão.

  5. Clique em Começar para iniciar a sessão de perfil. Se você definir uma duração, o Script Profiler exibe um contador regressivo com o tempo restante na sessão.

  6. Clique em Parar ou aguarde até que o registro termine para exibir os dados de perfuração.

Lendo Dados de Perfil

Depois que uma sessão termina, o Script Profiler gera uma tabela mostrando quanto tempo cada chamada de função custa em tempo de CPU. A tabela classifica chamadas de função por tempo mais longo, menor tempo gasto, e permite que você pesquise por funções específicas por seu nome. Ele fornece as seguintes duas visualizações:

  • Callgraph (Padrão): Categoriza e exibe chamadas de função em uma estrutura de árvore baseada em tarefas de quadro. Essa visão exibe cada categoria de tarefa como um nó sob a mesma raiz e permite que você expanda-os para ver funções. Você também pode passar o mouse sobre qualquer nó na árvore para ver informações 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 nas seguintes opções de exibição para ajustar suas necessidades de diagnóstico:

NomeOpçõesPadrãoDescrição
UnidadeMilissegundos (ms)Percentagem (%)senhorasExibe o tempo gasto em cada chamada de API em milisegundos ou porcentagens da sessão de gravação total.
MédioOff1-segund1-minuto5-minuto10-minutoDesligadoCalcula o tempo médio gasto em cada chamada de API pelo valor selecionado. Se você selecionar uma opção que é maior que a duração da sessão, o profilador de script extrapola a duração da sessão para calcular o valor médio. Por exemplo, você pode selecionar a opção de 5 minutos para uma sessão de 1 minuto para ver o valor esperado médio se você executar o código por 5 minutos.

Exportando Dados de Perfil

O Script Profiler permite que você exporte dados de profilamento registrados como um arquivo JSON. Para exportar dados registrados depois de uma sessão de profilamento:

  1. Na janela Script Profiler, clique em Exportar .

  2. Na janela de exportação, selecione a sessão de perfil que você deseja exportar. Rename o nome do arquivo padrão se você 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 de versão.
  • SessionStartTime : Um timestamp em milisegundos que registra a sessão começar tempo.
  • TimeEndTime : Um timestamp em milisegundos que registra o tempo de fim da sessão.
  • Categorias : Um array de categorias de tarefa de quadro registradas na sessão de perfuração. 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 de 1 baseado no arranjo Nodes. Por exemplo, você pode pesquisar o nó com o NodeId de 0> 1230> ao recuperar o elemento 3> 123 3> .
  • Nós : Um array de nós registrados na sessão de perfuração. Cada entrada inclui:
    • Duração Total : A quantidade de tempo que o nódeo leva em tempo em microsegundos.
    • FunctionIds : Um array de identificadores de funções exclusivos.
    • IDs de Nódoas : Um array de IDs de Nódoas.
  • Funções : Um array de funções registradas na sessão de perfuração.
    • Duração Total : A quantidade de tempo que a função gasta 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 de linha da função, se houver.
    • Bandeiras : Um pouco de campo que indica qualquer ambiente de execução de função específica. Atualmente pode ter os seguintes valores:
      • 0 : O 0th bit representa IsNative para execução sob o Código Nativo.
      • 1 : O primeiro bit representa IsPlugin para a 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}
]
}