El MicroProfiler es una herramienta de optimización disponible en Roblox Studio y el cliente Roblox que proporciona información de tiempo detallada para las tareas de planificación de tareas llamadas etiquetas .
- Para obtener una lista de tareas comunes, consulte la Referencia de etiqueta .
- Para un ejemplo paso a paso de cómo usar el MicroProfiler para identificar un problema de rendimiento, consulte el MicroProfiler Walkthrough.
MicroProfiler Básicos
Para abrir el MicroProfiler, presione CtrlAltF6 ( ⌘1> ⌥1> 3> F6 3> ) en Studio o el cliente. También puede usar el menú de configuración en el cliente.
Cuando se abre, una barra de menú es visible en la parte superior de la ventanilla3D. En el modo por defecto, un gráfico de barra de movimiento muestra el tiempo utilizado en cada marco de la Sala de Agendas.
Las barras generalmente deben estar alrededor del medio del gráfico, pero puede ver repentidos picos (aumentos rápidos en el valor). Los picos indican que se necesitó más tiempo para realizar una tarea, generalmente debido a un mayor trabajo. Por instancia, crear muchas partes en movimiento requiere más trabajo de la simulación de física, lo que luego necesita más tiempo para procesar el movimiento y contactos de partes. La siguiente imagen muestra un ejemplo de un pico:
Para pausar la grabación de los marcos, presione CtrlP ( ⌘P ) o haga clic en 2> Pausar2> en la barra de menú. Mientras se pausa, aparece una línea de tiempo y puede navegar por los marcos haciendo clic o arrastrando en el gráfico.
Para una descripción completa de las diferentes vistas y cómo navegar por la interfaz MicroProfiler, consulte MicroProfiler Modes .
Hilos
Al igual que muchos programas, Roblox utiliza múltiples hilos para realizar varias secuencias de tareas al mismo tiempo. En el modo MicroProfiler detallado, puedes ver etiquetas para cada hilo en la izquierda.
Hay tres tipos principales de hilo:
Principal/Renderizar : Tal vez sea intuitivamente, se ejecuta en el CPU. Procesa la entrada, Humanoids , animaciones/tweening, propiedad de física, sonido y espera de guión de resumen. También actualiza las interfaces de Studio y coordina los demás hilos.
Trabajador ("Trabajador de RBX": Ayuda al hilo principal con redes, física y encontramiento de caminos. Debido al número de núcleos en los procesadores modernos, probablemente tenga muchos hilos de trabajo.
Renderizar ("GPU": sigue una lógica "preparar, ejecutar, presentar"). Comunica con la unidad de procesamiento gráfico (GPU) del dispositivo.
- Preparar: La información del subprocesso principal se usa para actualizar los modelos de renderizado.
- Realice: Presentar comandos de rendimiento, incluidas las interfaces 2D.
- Presentar: se sincroniza con elGPU.
Perfilado personalizado
Si sus scripts están ejecutando tareas complicadas, puede perfilar partes críticas del código para asegurarse de que no estén tardando demasiado. Wrap code in debug.profilebegin() y debug.profileend() para tiempo todo lo que se hace entre esas llamadas de función y crear una etiqueta en el tiempo de MicroProfiler.
HardWorkScript
debug.profilebegin("Hard Work")-- Aquí es donde debería estar el código para ser profundadodebug.profileend()
Hay una cantidad limitada de memoria disponible para las etiquetas de MicroProfiler. Si esta memoria se agota, las etiquetas de personalizador de etiquetas podrían no aparecer como un nombre significativo en el tiempo de ejecución. Usa menos etiquetas para evitar este problema. Si ya no necesitas perfilar una sección de tu código, comenta o elimina las llamadas a estas funciones.
Ejemplo
El código de ejemplo a continuación conecta una función de muestra a un evento RunService.PreSimulation , que se ejecuta en cada marco. Cualquier cosa que se haga esto a menudo debería ejecutarse tan eficientemente como sea posible, por lo que esta función es un buen candidato para profilar.
local RunService = game:GetService("RunService")
local function onPreSimulation()
debug.profilebegin("Hard Work")
-- Ejemplo de trabajo duro: intercambiar dos variables 200.000 veces
local a, b = 0, 1
for _ = 1, 200000 do
a, b = b, a
end
debug.profileend()
end
RunService.PreSimulation:Connect(onPreSimulation)
Cuando ejecutas la experiencia y haces que MicroProfiler se pause ( CtrlP o ⌘P ) la etiqueta personalizada es visible debajo de la etiqueta 2> gameStepped2> .
De su duración en el tiempo de línea de tiempo, puede decir que la función está usando mucho tiempo de procesamiento en comparación con otras operaciones.
Guardando datos de marco
Si desea guardar un conjunto de datos de marco para revisar más tarde (o compartir con otra persona), use el menú descarga . El motor guarda los datos de marco en un archivo llamado microprofile-<date>-<time>.html en la carpeta de directorios de Roblox.
- En Windows, check %LOCALAPPDATA%\Roblox\logs .
- En macOS, chequea ~/Library/Logs/Roblox .
Estos archivos HTML usan la misma interfaz de usuario basada en el web que la conexión en vivo para dispositivos móviles y umpuertas del servidor.
Perfilado en dispositivos móviles
Para acceder al MicroProfiler desde el cliente móvil, su dispositivo móvil debe estar conectado a la misma red que su máquina de desarrollo.
Habilite el MicroProfiler en el menú Configuración del dispositivo móvil. Después de habilitarlo, el menú muestra una dirección IP y un número de puerto.
Por ejemplo, en la captura de pantalla de arriba, la dirección es 192.168.1.166 y el puerto es 1338 . De un ordenador en la misma red, navega a http://192.168.1.166:1338 para una versión web del Interfaz de usuario
Perfilando el Servidor
Además del microprocesador estándar cliente MicroProfiler, puede tomar breves descargas de la actividad del servidor usando el microprocesador del servidor.
En una experiencia que tenga permisos de edición, abra la Consola del Desarrollador con CtrlAltF9 .
En el menú desplegable, seleccione MicroProfiler .
En la sección ServidorProfiler , especifique el número de marcos por segundo (máximo 60) y el número de segundos para perfilar (máximo 4).
Haga clic en Empezar grabación .
Después de unos segundos, la Consola del Desarrollador proporciona el camino a la carpeta, que es el mismo camino que un dump estándar .
Usando la interfaz web
En general, la interfaz web MicroProfiler funciona similarmente al modo detallado, pero tiene algunas características adicionales:
Además de filtrar por grupo, puede filtrar por subproceso.
Usa CtrlF / ⌘F para saltar a la ocurrencia de una tarea que toma el mayor tiempo en el volcar. Por ejemplo, 2> computeLightingPerform2> se ejecuta en cada marco. Si buscas en un dump con 128 marcos, puedes saltar a la fruta donde se completó la tarea más larga.
Usa el menú X-Ray para habilitar o deshabilitar el código de color para la asignación de memoria.
- Los marcos más ligeros dentro del gráfico de la barra principal indican una mayor alocación de memoria.
- Las porciones más ligeras de la barra de vista previa y las etiquetas más ligeras en la línea del tiempo indican las porciones de la página con mayor alocación de memoria.
- En el modo de rayos X, presione C para mostrar el tamaño total de las asignaciones de memoria en lugar del número de asignaciones.
Usa el menú Exportar para exportar un gráfico de llama de CPU o memoria, una visualización especial que agrega todos los núcleos de llamada incluidos en el volcar. El gráfico de llama es especialmente útil para identificar tareas que no toman particularmente largo para ejecutarse (y por lo tanto son difíciles de notar) pero que se ejecutan con frecuencia suficiente para que su tiempo de procesamiento sea significativo.
Arrastra y suelta un segundo archivo de descarga en la interfaz de usuario de la web para generar un gráfico de llamas de diferencia, que puede ayudarte a identificar mejoras o regresiones en el rendimiento de tu experiencia con el tiempo. Haz clic en Combinar y comparar para exportar un nuevo archivo HTML.
El gráfico de llamas de diferencia destaca el dump (izquierda o derecha) que consume más CPU o memoria, con colores más brillantes que indican una mayor diferencia.