El MicroProfiler es una herramienta de optimización disponible en Roblox Studio y el Cliente de Roblox que proporciona información detallada sobre el tiempo para los procesos del Programador de tareas llamados Etiquetas. Para obtener una lista completa de estas Etiquetas de proceso, consulte la Tabla de etiquetas. Para obtener un tutorial sobre cómo usar efectivamente MicroProfiler para optimizar su experiencia, consulte el Tutorial de MicroProfiler .
Usando el MicroProfiler
Para abrir la interfaz de MicroProfiler, presione CtrlAltF6 (⌘⌥F6 ) en Studio o el cliente. Cuando se abre, una barra de menú es visible en la parte superior de la vista del juego. Debajo de ella, un gráfico de barra móvil muestra el tiempo utilizado en cada fotograma del Programador de tareas. Los fotogramas fluyen a la izquierda, con los fotogramas más recientes a la derecha.
Las barras indican el tiempo de procesamiento de cada fotograma:
- Las barras anaranjadas indican fotogramas "estándar" donde el Tiempo de trabajo excede el Tiempo de renderizado .
- Las barras azules indican fotogramas donde el tiempo de renderizado excede el tiempo de trabajos . Pase el cursor sobre uno de estos fotogramas, y puede ver un valor positivo para Esperando al hilo de renderizado . Un gran número de estos fotogramas indican un cuello de botella de renderizado.
Las barras generalmente deben estar alrededor del medio del gráfico, pero es posible que vea que las barras se acerquen o aumenten de valor. Las puntas indican que se tomó más tiempo realizar algún proceso de Programador de tareas, generalmente debido a una mayor carga de trabajo. Por instancia, crear muchas partes móviles pone más trabajo en la simulación de física, y por lo tanto se usa más tiempo para procesar el movimiento y los contactos de las partes. La siguiente imagen muestra un ejemplo de una puntada:
Para pausar la grabación de fotogramas, presione CtrlP (⌘P ) o haga clic en Pausa a lo largo de la barra superior. Mientras está en pausa, aparece una línea de tiempo sobre la vista del juego, y puede navegar a través de los fotogramas haciendo clic o arrastrando el gráfico. Desplazarse hace zoom en la línea de tiempo. Las etiquetas coloridas describen las diferentes tareas que se están realizando; las etiquetas que aparecen directamente debajo de otra etiqueta indican que una tarea se está realizando durante otra tarea.
Haga clic derecho en una etiqueta para acercar la línea de tiempo a la duración exacta de la etiqueta. Haga clic izquierdo para agregar la etiqueta a un gráfico de línea en la parte inferior derecha de la vista del juego. El gráfico mostrará la hora en que la tarea está tomando cada fotograma. Usando este gráfico, puede probar el rendimiento de solo ciertas etiquetas en su juego. Se pueden agregar múltiples etiquetas y puede ocultar el gráfico haciendo clic con el botón derecho.
Temas
Como muchos programas, Roblox usa múltiples hilos para realizar varias secuencias de tareas al mismo tiempo. En la línea de tiempo de MicroProfiler, puede ver las etiquetas de estas a la izquierda. Hay tres tipos de hilos:
Principal : Procesa entrada, Humanoides, animaciones/tweening, propiedad física, sonido, reanudaciones de scripts en espera, actualizaciones de interfaces de Studio (/studio/explorer, Propiedades) y coordina los otros hilos.
Trabajador ("trabajador de TSMk2"): Ayuda al subproceso principal con redes, física y búsqueda de caminos. Múltiples se usan dependiendo del número de núcleos del procesador.
Render ("GPU"): Sigue una lógica de preparación, ejecución y presentación. Se comunica con la unidad de procesamiento gráfico (GPU) del dispositivo.
- Preparar: La información del hilo principal se usa para actualizar los modelos de renderizado.
- Ejecutar: emitir comandos de renderizado, incluidas las interfaces 2D.
- Presente: Se sincroniza con la GPU.
Perfilado Personalizado
Si tus scripts están haciendo tareas complicadas, entonces querrás perfilar puntos críticos para asegurarte de que se esté usando una cantidad razonable de tiempo. Puedes hacer esto llamando a depurar.profilebegin seguido de depurar.profileend, que multiplica todo lo hecho entre estas dos llamadas de función. Esto crea una etiqueta en la línea de tiempo de MicroProfiler.
debug.profilebegin("Hard Work")-- Aquí es donde el código para ser perfilado debe estardebug.profileend()
Tenga en cuenta que hay una cantidad limitada de memoria disponible para las etiquetas de MicroProfiler, por lo que a veces las etiquetas de perfilador personalizadas pueden no aparecer como un nombre significativo si esta memoria se agota. El uso de menos etiquetas evitará esto. Si ya no necesita perfilar una sección de su código, debe comentar o eliminar las llamadas a estas funciones, ya que no proporcionan ningún otro beneficio excepto durante la depuración.
Ejemplo
La muestra de código a continuación conecta una función ficticia con el evento RunService.PreSimulation, que ejecuta cada fotograma. Cualquier cosa que se haga a menudo debe ejecutarse de la manera más eficiente posible, por lo que se han agregado llamadas a depurar.profilebegin y depurar.profileend alrededor del código para ser perfilado.
local RunService = game:GetService("RunService")
local function onPreSimulation()
debug.profilebegin("Hard work") -- Empieza a crear tu perfil aquí con esta etiqueta
-- Ejemplo de trabajo duro: intercambiar dos variables 200,000 veces
local a, b = 0, 1
for i = 1, 200000 do
a, b = b, a
end
debug.profileend() -- Deja de crear perfiles aquí
end
RunService.PreSimulation:Connect(onPreSimulation)
Ejecutando el juego y pausando el perfilador (CtrlP ; ⌘P ), la etiqueta del perfilador personalizado es visible bajo la etiqueta Pasada:
Está claro que esta función está usando mucho rendimiento innecesariamente: si este fuera código real, buscar oportunidades de optimización aquí sería un buen iniciar. Sin embargo, este es un ejemplo ingenioso que hace un trabajo sin sentido para enfatizar la etiqueta.
Perfilado en dispositivos móviles
Puede habilitar el MicroProfiler a través del menú de Configuración. Usando un dispositivo móvil conectado a la misma red que su máquina de desarrollo, puede acceder a un MicroProfiler basado en navegador. Una vez habilitado, se muestra la dirección IP de red del dispositivo junto con 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. En el navegador web de un ordenador conectado a la misma red , navegarías a http://192.168.1.166:1338. Se muestra una interfaz similar a la que se ve en dispositivos no móviles: