Perfilador de scripts es una herramienta dentro de la consola del desarrollador que te permite registrar sesiones de perfilado de todos los scripts ejecutados y ver sus costos de tiempo de CPU con configuraciones de grabación y visualización personalizadas.Puede registrar todos los tipos de llamadas de función, incluidas las llamadas de función Luau, las llamadas de método y los accesos de propiedad.Esta herramienta es útil para identificar scripts que ocupan la mayor cantidad de recursos de CPU y ralentizan el ejecución.
Sesiones de perfilado de registros
Antes de grabar, debe seleccionar el entorno de grabación de:
- Cliente (Por defecto) — Registra los scripts del lado del cliente, incluidos LocalScripts y Scripts con RunContext establecido en Client .
- Servidor — Registra scripts del lado del servidor, incluidos Scripts con RunContext establecido a Server o Legacy .El perfilador de scripts limpia todos los datos recopilados del lado del servidor al final de cada sesión.
También puedes establecer 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) | 1KHz | La frecuencia de 10 kHz tiene una mayor precisión, ya que el perfilador de scripts podría no capturar llamadas API que se ejecuten con más frecuencia que la frecuencia seleccionada, pero también tiene un costo de rendimiento más alto. |
Duración de sesión | Manual de 1 minuto5 minutos10 minutos | Manual | La opción manual requiere que pares de grabar manualmente. |
Comportamiento de encuestas en vivo | En desuso | Apagado | Este comportamiento encuesta y actualiza los datos de perfil cada segundo durante una sesión de perfilado. |
Para registrar una nueva sesión de perfilado:
Abre Consola de desarrollador.
Expandir el cuadro de herramientas para seleccionar ScriptProfiler .
Expand the client-server dropdown to select Cliente or Servidor .
(Opcional) Compruebe la casilla de verificación En vivo para habilitar el comportamiento de encuesta en vivo.
(Opcional) Seleccione Frecuencia y Tiempo para elegir la frecuencia de grabación y la duración de la sesión si no desea utilizar los valores predeterminados.
Haga clic en Iniciar para comenzar la sesión de perfilado.Si estableces una duración, el perfilador de scripts 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 perfilado.
Leer datos de perfilado
Después de que una sesión se detenga, el perfilador de scripts genera una tabla que muestra cuánto tiempo cuesta cada llamada de función en tiempo de CPU.La función de clasificación de tablas ordena las llamadas de las funciones más tiempo gastado a la menos tiempo gastado, y te permite buscar funciones específicas por su nombre.Proporciona las siguientes dos vistas:
- Gráfico de llamadas (Por defecto): Categoriza y muestra llamadas de función en una estructura de árbol basada en tareas de marco.Esta vista muestra cada categoría de tarea como nodos bajo el mismo raíz y te permite expandirlos para ver funciones.También puedes pasar el cursor sobre cualquier nodo en el árbol para ver la información de archivo y línea.Por ejemplo, Stepped/CameraInput/<anonymous> podría revelar Players.[LocalPlayer].PlayerScripts.PlayerModule.CameraModule.CameraInput:125 .
- Funciones : Lista todas las funciones sin categorizarlas por tareas.
También puede seleccionar de las siguientes opciones de visualización para personalizar sus necesidades de depuración:
Nombre | Opciones | Por defecto | Descripción |
---|---|---|---|
Unidad | Milisegundos (ms) Porcentaje (%) | ms | Muestra el tiempo que se pasó en cada llamada de API en milisegundos o porcentajes de la sesión de grabación total. |
Mediocre | Apagado1-segundo1-minuto5-minuto10-minuto | Apagado | 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 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. |
Exportar datos de perfilado
El perfilador de scripts te permite exportar los datos de perfilización grabados como un archivo JSON. Para exportar datos grabados después de una sesión de perfilación:
En la ventana Perfilador de scripts, haz clic en Exportar .
En la ventana de exportación, seleccione la sesión de perfilado que desea exportar. Renombra el nombre del archivo predeterminado si desea establecer un nombre personalizado.
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.
- Tiempo de inicio de sesión : Un marcador de posición en milisegundos que registra el tiempo de inicio de sesión.
- SessionEndTime : Un marcador de posición en milisegundos que registra el tiempo de finalización de la sesión.
- Categorías : Un array de categorías de tareas de marco registradas en la sesión de perfilado. Cada entrada incluye:
- Nombre : El nombre de cada categoría de tarea de marco.
- NodeId : El identificador único de una categoría de tareas (nodo).Es un índice basado en 1 en el Nodes matriz/lista.Por ejemplo, puedes buscar el nodo con el NodeId de 123 recuperando el elemento 123 en Nodes .
- Nodos : Un array de nodos registrados en la sesión de perfilado. Cada entrada incluye:
- Duración total : La cantidad de tiempo que cuesta el nodo en tiempo de CPU en microsegundos.
- FunctionIds : Un array de identificadores únicos de funciones.
- NodeIds : Un array de ID de nodo.
- Funciones : Un array de funciones registradas en la sesión de perfilado.
- Duración total : La cantidad de tiempo que la función cuesta en tiempo de CPU en microsegundos.
- Nombre : El nombre de la función, si está disponible.
- Fuente : La fuente de la función, si está disponible.
- Línea : El número de línea de la función, si está disponible.
- Banderas : Un campo de bits que indica cualquier entorno, ambientede ejecución de funciones específico. Actualmente puede tener los siguientes valores:
- 0 : El bit 0 representa IsNative para la ejecución bajo Native CodeGen.
- 1 : El 1er 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}
]
}