Perfilador de Scripts es una herramienta dentro de la Consola del Desarrollador que te permite registrar sesiones de perfilado de todos los scripts en ejecución y ver sus costos de tiempo de CPU con configuraciones de grabación y visualización personalizadas. Puede registrar todos los tipos de llamadas a funciones, incluidas las funciones de Luau, llamadas a métodos y accesos a propiedades. Esta herramienta es útil para identificar scripts que consumen más recursos de CPU y ralentizan el rendimiento.
Grabar sesiones de perfilado
Antes de grabar, necesitas seleccionar el entorno de grabación de:
- Cliente (Predeterminado) — Registra scripts del lado del cliente, incluidos LocalScripts y Scripts con RunContext configurado en Client.
- Servidor — Registra scripts del lado del servidor, incluidos Scripts con RunContext configurado en Server o Legacy. El Perfilador de Scripts borra 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 | Predeterminado | 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 captar llamadas a la API que se ejecutan con más frecuencia que la frecuencia seleccionada, pero también tiene un mayor costo de rendimiento. |
| Duración de la Sesión | 1 minuto 5 minutos 10 minutos Manual | Manual | La opción manual requiere que detengas la grabación manualmente. |
| Comportamiento de Sondeo en Vivo | Activado Desactivado | Desactivado | Este comportamiento sondea y actualiza los datos de perfilado cada segundo durante una sesión de perfilado. |
Para grabar una nueva sesión de perfilado:
Abre la Consola del Desarrollador.
Expande el menú desplegable de herramientas para seleccionar Perfilador de Scripts.

Expande el menú desplegable cliente-servidor para seleccionar Cliente o Servidor.

- OPCIONALMarca la casilla En Vivo para habilitar el comportamiento de sondeo en vivo.
- OPCIONALSelecciona Frecuencia y Tiempo para elegir la frecuencia de grabación y la duración de la sesión si no deseas usar los valores predeterminados.
Haz clic en Iniciar para comenzar la sesión de perfilado. Si estableciste una duración, el Perfilador de Scripts muestra un temporizador de cuenta regresiva con el tiempo restante en la sesión.
Haz clic en Detener o espera hasta que la grabación termine para mostrar los datos de perfilado.
Leer datos de perfilado
Después de que una sesión se detiene, el Perfilador de Scripts genera una tabla que muestra cuánto tiempo cuesta cada llamada a función en tiempo de CPU. La tabla ordena las llamadas a funciones desde la que más tiempo consume hasta la que menos tiempo consume, y te permite buscar funciones específicas por su nombre. Proporciona las siguientes dos vistas:
- Callgraph (Predeterminado): Categoriza y muestra las llamadas a funciones en una estructura de árbol basada en tareas de marco. Esta vista muestra cada categoría de tarea como nodos bajo la misma raíz y te permite expandirlos para ver funciones. También puedes pasar el cursor sobre cualquier nodo en el árbol para ver información de archivo y línea. Por ejemplo, Stepped/CameraInput/<anónimo> podría revelar Players.[LocalPlayer].PlayerScripts.PlayerModule.CameraModule.CameraInput:125.

- Funciones: Enumera todas las funciones sin categorizarlas por tareas.

También puedes seleccionar entre las siguientes opciones de visualización para adaptar tus necesidades de depuración:
| Nombre | Opciones | Predeterminado | Descripción |
|---|---|---|---|
| Unidad | Milisegundos (ms) Porcentaje (%) | ms | Muestra el tiempo gastado en cada llamada a la API en milisegundos o porcentajes de la sesión de grabación total. |
| Promedio | Desactivado 1 segundo 1 minuto 5 minutos 10 minutos | Desactivado | Calcula el tiempo promedio gastado en cada llamada a la API según el valor seleccionado. Si seleccionas una opción que es más larga que la duración de la sesión, el perfilador extrapola la duración de la sesión para calcular el promedio. Por ejemplo, puedes seleccionar la opción de 5 minutos para una sesión de 1 minuto para ver el valor promedio esperado si ejecutas el código durante 5 minutos. |
Exportar datos de perfilado
El Perfilador de Scripts te permite exportar los datos de perfilado grabados como un archivo JSON. Para exportar los datos grabados después de una sesión de perfilado:
En la ventana del Perfilador de Scripts, haz clic en Exportar.
En la ventana de exportación, selecciona la sesión de perfilado que deseas exportar. Cambia el nombre del archivo predeterminado si deseas establecer un nombre personalizado.
Haz 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: Una marca de tiempo en milisegundos que registra la hora de inicio de la sesión.
- SessionEndTime: Una marca de tiempo en milisegundos que registra la hora 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 tarea (nodo). Es un índice basado en 1 en el array Nodes. 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:
- TotalDuration: La cantidad de tiempo que el nodo cuesta en tiempo de CPU en microsegundos.
- FunctionIds: Un array de identificadores únicos de funciones.
- NodeIds: Un array de IDs de nodos.
- Funciones: Un array de funciones registradas en la sesión de perfilado.
- TotalDuration: 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.
- Flags: Un campo de bits que indica cualquier entorno de ejecución de función específico. Actualmente puede tener los siguientes valores:
- 0: El bit 0 representa IsNative para ejecución bajo Native CodeGen.
- 1: El bit 1 representa IsPlugin para ejecución como parte de un plugin.
{
"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}
]
}