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 do Developer Console que permite gravar sessões de perfilamento de todos os scripts em funcionamento e visualizar seus gastos de tempo de CPU com configurações de gravação e exibição personalizadas. Ele pode gravar todos os tipos de chamadas de função, incluindo funções Luau, chamadas de método e acessos de propriedades. Essa ferramenta é útil para identificar scripts que consomem mais recursos de CPU e diminuem o performance.

Gravando sessões de criação de perfil

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

  • Cliente (Padrão) Registra scripts do lado do cliente, incluindo LocalScripts e Scripts com RunContext definido como Client .
  • Server Registra scripts do lado do servidor, incluindo Scripts com RunContext definido como Server ou Legacy. O Script Profiler apaga 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:

ComportamientoOpcionesPor defectoDescripción
Frecuencia1000 veces por segundo (1 KHz)
10.000 veces por segundo (10 KHz)
1 kilocicloLa frecuencia de 10 KHz tiene una mayor precisión, ya que Script Profiler puede no recibir llamadas API que se ejecuten con más frecuencia que la frecuencia seleccionada, pero también tiene un mayor costo de rendimiento.
Duración de la sesión1 minuto
5 minutos
10 minutos
Manual
ManuelLa opción manual requiere que dejes de grabar manualmente.
Comportamiento de votación en vivoEncendido
Apagado
ApagadoEste comportamiento realiza encuestas y actualiza los datos de perfil cada segundo durante una sesión de perfil.

Para gravar uma nova sessão de criaçã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 a lista suspensa cliente-servidor para selecionar Cliente ou Servidor .

    Dropdown menu with Client and Server options for selection.
  3. (Opcional) Marque a caixa de seleção Live para habilitar o comportamento de votação 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 Iniciar para iniciar a sessão de criação de perfil. Se você definir uma duração, o Script Profiler exibirá um cronômetro com o tempo restante na sessão.

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

Lendo dados de perfil

Depois que uma sessão pára, o Script Profiler gera uma tabela mostrando quanto tempo cada chamada de função gasta no tempo da CPU. A tabela classifica as chamadas de função do mais gasto para o menos gasto, e permite que você pesquise 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 com base em tarefas de quadro. Esta exibição exibe cada categoria de tarefa como nós sob a mesma raiz e permite que você os expanda para ver funções. Você também pode passar 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 entre as seguintes opções de exibição para adaptar suas necessidades de depuração:

NombreOpcionesPor defectoDescripción
UnidadMillisegundos (ms)
Porcentaje (%)
fr.Muestra el tiempo transcurrido en cada llamada de API en milisegundos o porcentajes de la sesión de grabación total.
PromedioApagado
1 segundo
1 minuto
5 minutos
10 minutos
ApagadoCalcula el tiempo promedio gastado en cada llamada de API por el valor seleccionado. Si selecciona una opción que es más larga que la duración de la sesión, el perfilador de scripts extrapolará la duración de la sesión para calcular el promedio. Por ejemplo, puede seleccionar la opción de 5 minutos para una sesión de 1 minuto para ver el valor promedio esperado si ejecuta el código durante 5 minutos.

Exportando dados de perfil

O Script Profiler permite exportar dados de perfil gravados como um arquivo JSON. Para exportar dados gravados após uma sessão de perfil:

  1. Na janela do Script Profiler, clique em Exportar .

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

  3. Clique 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.
  • SessionStartTime : Um timestamp em milissegundos que registra a hora de início da sessão.
  • SessionEndTime : Um timestamp em milissegundos que registra a hora do fim da sessão.
  • Categorias : Um conjunto de categorias de tarefas de quadro registradas na sessão de criaçã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 (nodo). É um índice baseado em 1 na matriz Nodes. Por exemplo, você pode buscar o nó com o NodeId de 123 recuperando o 123o elemento em Nodes .
  • Nodos : Um conjunto de nós registrados na sessão de criação de perfil. Cada entrada inclui:
    • TotalDuration : A quantidade de tempo que o nó gasta em tempo de CPU em microssegundos.
    • FunctionIds : Um conjunto de identificadores únicos de funções.
    • NodeIds : Um conjunto de IDs de nó.
  • Funções : Um conjunto de funções registradas na sessão de criação de perfil.
    • TotalDuration : A quantidade de tempo que a função gasta em tempo de CPU em microssegundos.
    • 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 bit que indica qualquer ambiente de implementação de função específica. Atualmente pode ter os seguintes valores:
      • 0 : O 0o bit representa IsNative para implementação no Native CodeGen.
      • 1 : O 1o bit representa IsPlugin para implementaçã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}
]
}