Script Profiler es una herramienta dentro de la Consola del desarrollador que te permite grabar sesiones de profiling de todos los scripts en ejecución y ver sus costos de CPU con configuración de grabación personalizada. Puede grabar todos los tipos de llamadas de función, incluida la función Luau, llamadas de método y accesos de propiedad. Esta herramienta es útil para identificar scripts que ocupan la mayoría de los recursos del CPU y ralentizan el rendimiento.
Grabando Sesiones de Perfilado
Antes de grabar, debe seleccionar el entorno de grabación desde:
- Cliente (Por Defecto) — Registra scripts del lado del cliente, incluidos LocalScripts y Scripts con 0> Class.BaseScript.RunContext|RunContext0> configurado para 3> Enum.RunContext.Client|Client 3> .
- Servidor — Registra scripts del lado del servidor, incluido Scripts con RunContext establecido en 0> Enum.RunContext.Server|Server0> o 3> Enum.RunContext.Legacy|Legacy 3> . El Procesador de Escritos elimina todos los datos rec
También puede configurar las siguientes opciones de grabación:
Comportamiento | Opciones | Por defecto | Descripción |
---|---|---|---|
Frecuencia | 1000 veces por segundo (1 KHz)10,000 veces por segundo (10 KHz) | 1 KHz | La frecuencia de 10 KHz tiene mayor precisión, ya que el perfilador de scripts puede no recoger llamadas de API que se ejecutan con más frecuencia que la frecuencia seleccionada, pero también tiene un costo de rendimiento más alto. |
Longitud de sesión | 1 minuto5 minutos10 minutosManual | Manual | La opción manual requiere que dejes de grabar manualmente. |
Comportamiento de Encuesta en Vivo | Sí/No | No | Este comportamiento recopila y actualiza los datos de perfilado cada segundo durante una sesión de perfilado. |
Para grabar una nueva sesión de perfil:
Expand the tools dropdown to select ScriptProfiler .
Expanda el menú desplegable cliente-servidor para seleccionar Cliente o Servidor .
(Opcional) Marque la casilla de verificación Vivo para habilitar el comportamiento de encuestas en vivo.
(Opcional) Seleccione Freq y Time para elegir la frecuencia de grabación y la duración de la sesión si no desea usar los valores predeterminados.
Haga clic en Empezar para comenzar la sesión de perfilado. Si establece una duración, el script perfilador muestra un temporizador de cuenta regresiva con el tiempo restante en la sesión.
Haga clic en Detener o espere hasta que termine la grabación para mostrar los datos de perfil.
Leer datos de perfil
Después de que una sesión termine, el Procesador de guiones genera una tabla que muestra cuánto tiempo cada llamada de función costó en el tiempo de CPU. La tabla clasifica las llamadas de función por el tiempo más alto a menor, y le permite buscar por funciones específicas por su nombre. Proporciona las siguientes dos vistas:
- Callgraph (Por defecto): Categoriza y muestra las llamadas de función en una estructura de árbol basada en tareas de marco. Esta vista muestra cada categoría de tarea como nodos debajo de la misma raíz y te permite expandirlas para ver funciones. También puedes pasar el cursor sobre cualquier nodo en el árbol para ver información de archivos y líneas. Por
- Funciones : Lista todas las funciones sin categorizarlas por tareas.
También puede seleccionar las siguientes opciones de pantalla para personalizar sus necesidades de diagnóstico:
Nombre | Opciones | Por defecto | Descripción |
---|---|---|---|
Unidad | Millisegundos (ms) Porcentaje (%) | ms | Muestra el tiempo que se ha gastado en cada llamada de API en milisegundos o porcentajes de la sesión de grabación total. |
Mediocre | Desactivado1-segundo1-minuto5-minuto10-minuto | No | Calcula 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 extrapola la duración de la sesión para calcular el valor 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 se ejecuta el código durante 5 minutos. |
Exportando Datos de Perfil
Script Profiler le permite exportar los datos de perfil registrados como un archivo JSON. Para exportar los datos registrados después de una sesión de perfil:
En la ventana Script Profiler, haz clic en Exportar .
En la ventana de exportación, seleccione la sesión de perfilado que desea exportar. Rename the default file name if you want to set a custom name.
Haga clic en Exportar para guardar el archivo JSON.
El archivo JSON exportado incluye los siguientes campos:
- Versión : El número de versión.
- SessionStartTime : Un tiempo de sesión en milisegundos que registra el tiempo de inicio de la sesión.
- TimeEndSession : Un tiempo de sesión en milisegundos que registra el tiempo de finalización de la sesión.
- Categorías : Un array de categorías de tareas registradas en la sesión de perfil. Cada entrada incluye:
- Nombre : El nombre de cada categoría de tarea de marco.
- NodeId : El identificador único de una categoría de tarea ( nodo). Es un índice de 1 basado en el Nodes matriz/lista. Por ejemplo, puede buscar el nodo con el NodeId de 0> 1230> al recuperar el elemento 123 en 3> Nodes 3> .
- Nodos : Un array de nodos registrados en la sesión de perfil. Cada entrada incluye:
- Duración total : La cantidad de tiempo que el nodo costó en tiempo de CPU en microsegundos.
- FunctionIds : Un array de identificadores de funciones únicas.
- NodeIds : Un arreglo de ID de nodo.
- Funciones : Un array de funciones registradas en la sesión de perfil.
- Duración total : La cantidad de tiempo que la función costó en tiempo de CPU en microsegundos.
- Nombre : El nombre de la función, si es que se hace disponible.
- Fuente : La fuente de la función, si es que se encuentra disponible.
- Línea : El número de línea de la función, si es que está disponible.
- Banderas: : Bit Field que indica cualquier entorno, ambientede ejecución de función específica. Puede tener los siguientes valores actualmente:
- 0 : El 0th bit representa IsNative para la ejecución bajo el código nativo.
- 1 : El 1 ° bit representa IsPlugin para la ejecución como parte de un complemento.
Ejemplo de datos 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}
]
}