Perfilador de Script

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

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:

ComportamientoOpcionesPor defectoDescripció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 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ón1 minuto5 minutos10 minutosManualManualLa opción manual requiere que dejes de grabar manualmente.
Comportamiento de Encuesta en VivoSí/NoNoEste comportamiento recopila y actualiza los datos de perfilado cada segundo durante una sesión de perfilado.

Para grabar una nueva sesión de perfil:

  1. Expand the tools dropdown to select ScriptProfiler .

    Dropdown menu of all Developer Console tools with the ScriptProfiler option highlighted for selection.
  2. Expanda el menú desplegable cliente-servidor para seleccionar Cliente o Servidor .

    Dropdown menu with Client and Server options for selection.
  3. (Opcional) Marque la casilla de verificación Vivo para habilitar el comportamiento de encuestas en vivo.

  4. (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.

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

  6. 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 Example callgraph view of a profiling session.
  • Funciones : Lista todas las funciones sin categorizarlas por tareas. Example functions view of a profiling session.

También puede seleccionar las siguientes opciones de pantalla para personalizar sus necesidades de diagnóstico:

NombreOpcionesPor defectoDescripción
UnidadMillisegundos (ms) Porcentaje (%)msMuestra el tiempo que se ha gastado en cada llamada de API en milisegundos o porcentajes de la sesión de grabación total.
MediocreDesactivado1-segundo1-minuto5-minuto10-minutoNoCalcula 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:

  1. En la ventana Script Profiler, haz clic en Exportar .

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

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

    Example export window.

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}
]
}