Perfilador de Scripts

*Este contenido se traduce usando la IA (Beta) y puede contener errores. Para ver esta página en inglés, haz clic en aquí.

Perfilador de Scripts es una herramienta dentro de la Consola de Desarrolladores que te permite grabar 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 grabar 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) — Graba scripts del lado del cliente, incluyendo LocalScripts y Scripts con RunContext establecido en Client.
  • Servidor — Graba scripts del lado del servidor, incluyendo Scripts con RunContext establecido 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 configurar las siguientes opciones de grabación:

ComportamientoOpcionesPredeterminadoDescripción
Frecuencia1000 veces por segundo (1 KHz)
10,000 veces por segundo (10 KHz)
1 KHzLa frecuencia de 10 KHz tiene mayor precisión, ya que el Perfilador de Scripts podría no captar las llamadas a la API que se ejecutan más frecuentemente que la frecuencia seleccionada, pero también tiene un costo de rendimiento más alto.
Duración de la Sesión1 minuto
5 minutos
10 minutos
Manual
ManualLa opción manual requiere que detengas la grabación manualmente.
Comportamiento de Polling en VivoActivado
Desactivado
DesactivadoEste comportamiento consulta y actualiza los datos de perfilado cada segundo durante una sesión de perfilado.

Para grabar una nueva sesión de perfilado:

  1. Expande el menú desplegable de herramientas para seleccionar PerfiladorDeScripts.

    Menú desplegable de todas las herramientas de la Consola de Desarrolladores con la opción PerfiladorDeScripts resaltada para selección.
  2. Expande el menú desplegable de cliente-servidor para seleccionar Cliente o Servidor.

    Menú desplegable con opciones de Cliente y Servidor para selección.
  3. (Opcional) Marca la casilla En Vivo para habilitar el comportamiento de polling en vivo.

  4. (Opcional) Selecciona 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.

  5. Haz 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.

  6. Haz clic en Detener o espera a que finalice la grabación para mostrar los datos de perfilado.

Leer datos de perfilado

Después de que la 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:

  • Gráfico de Llamadas (Predeterminado): Clasifica y muestra las llamadas a funciones en una estructura de árbol basada en las tareas del marco. Esta vista muestra cada categoría de tarea como nodos bajo la misma raíz y te permite expandirlos para ver las funciones. También puedes pasar el ratón sobre cualquier nodo en el árbol para ver información de archivo y línea. Por ejemplo, Stepped/CameraInput/<anonimo> podría revelar Players.[LocalPlayer].PlayerScripts.PlayerModule.CameraModule.CameraInput:125. Ejemplo de vista del gráfico de llamadas de una sesión de perfilado.
  • Funciones: Enumera todas las funciones sin clasificarlas por tareas. Ejemplo de vista de funciones de una sesión de perfilado.

También puedes seleccionar entre las siguientes opciones de visualización para adaptar tus necesidades de depuración:

NombreOpcionesPredeterminadoDescripción
UnidadMilisegundos (ms)
Porcentaje (%)
msMuestra el tiempo gastado en cada llamada a la API en milisegundos o porcentajes del total de la sesión de grabación.
PromedioDesactivado
1 segundo
1 minuto
5 minutos
10 minutos
DesactivadoCalcula el tiempo promedio gastado en cada llamada a la API por el valor seleccionado. Si seleccionas 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, 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:

  1. En la ventana del Perfilador de Scripts, haz clic en Exportar.

  2. 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.

  3. Haz clic en Exportar para guardar el archivo JSON.

    Ejemplo de ventana de exportación.

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 del marco registradas en la sesión de perfilado. Cada entrada incluye:
    • Nombre: El nombre de cada categoría de tarea del marco.
    • NodeId: El identificador único de una categoría de tarea (nodo). Es un índice basado en 1 dentro del 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 nodo.
  • 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.
Ejemplo de Datos de Perfilado 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}
]
}
©2026 Roblox Corporation. Roblox, el logotipo de Roblox y "Powering Imagination" son algunas de nuestras marcas registradas y no registradas en los Estados Unidos y otros países.