Lo que encontrarás en esta página: Descubrirás cómo usar Profile Analyzer de Unity para ver el impacto que puede tener un cambio en el código o un asset, un trabajo de optimización, un cambio en la configuración o una actualización de la versión de Unity. Este artículo se basa en la charla de Lyndon Homewood en Unite Copenhague 2019.
Descripción general de Profile Analyzer
¿Quieres saber dónde te conviene concentrar tus esfuerzos en relación con el rendimiento? ¿Necesitas comparar el rendimiento antes y después de un cambio? ¿Conoces el impacto que una actualización de la versión de Unity tiene sobre tu juego? Esta herramienta que analiza el rendimiento te ayudará a obtener esta información.
Esta herramienta te ayuda a identificar dónde concentrar tus esfuerzos. También te brinda una forma de comparar dos "instantáneas" de rendimiento en Unity para que veas el impacto de tu cambio. Te da representaciones visuales para ayudarte a entender cómo tus cambios afectan el rendimiento.
Profile Analyzer agrega y visualiza datos de los frames y los marcadores de un conjunto de frames de Unity Profiler para ayudarte a entender su comportamiento a lo largo de muchos frames. Esa información complementa el análisis de frame individual ya disponible en Unity Profiler.
Profile Analyzer realiza un análisis de rendimiento del CPU en múltiples frames. La herramienta incluye estadísticas y visualizaciones para ayudarte a desglosar la información rápidamente. También es compatible con Comprehensive Filtering, para que puedas analizar con mayor profundidad aquellas secciones que te interesan. Puedes utilizarla para comparar dos conjuntos de datos o puedes exportar los datos para analizarlos con otras herramientas.
Puedes utilizar Profile Analyzer que viene en la versión 2018.4 LTS+ como paquete, pero también puedes descargar la herramienta y luego anexarla a tu proyecto. Funciona con cualquier versión de Unity a partir de la 5.6. Para iniciarla, ve a Window > Analysis > Profile Analyzer. En versiones anteriores de Unity, puedes iniciarla directamente desde el menú Window.
Sugerencias para análisis del perfil
Aquí tienes algunas sugerencias para el análisis de perfil que te permitirán comenzar a usar Profile Analyzer:
- Obtén una instantánea representativa e iterable.
- Cierra todas las demás aplicaciones. Puedes usar Profile.logFile en tus scripts de C# para obtener los datos del perfil directamente del juego que se está ejecutando, lo que significa que no necesitas abrir el Editor. Envía los datos a un archivo .raw que luego puedes cargar en Unity Profiler.
- Desactiva el ajuste del rendimiento del CPU para que no se modifique la frecuencia de reloj (mediante la configuración de, por ejemplo, Intel SpeedStep o Turbo Boost).
Cómo revisar el rendimiento para una función específica
Si deseas ver cómo la llamada a una función afecta el rendimiento, utiliza Unity Profiler para tomar una instantánea de tus datos. Luego, puedes usar el botón Pull Data para cargarlos en Profile Analyzer. También puedes cargar una instantánea tomada anteriormente.
De inmediato, comienza a ejecutarse el análisis y los datos empiezan a mostrarse en el gráfico de frametime (tiempo de frames). Observa las barras de color blanco y color cian del gráfico. Las barras blancas representan las duraciones de frames y las de color cian, los marcadores actualmente seleccionados. Así, puedes ver cuánto contribuyen al frametime.
Puedes utilizar filtros para buscar tus marcadores. Los detalles del marcador se actualizan de forma automática para reflejar el subconjunto que seleccionaste. En la columna Count (recuento), verás cuántas instancias tiene. El gráfico de frametime destaca el marcador. Cuando seleccionas un marcador, también se actualiza Marker Summary (resumen del marcador).
Cómo encontrar frames representativos
When analyzing performance, you want to make sure that the data you’re looking at is representative. If your data is noisy, it’s easy to ensure that you select an average frame by using the Frame Summary at the top right – just click on the Frame shown as the Median and the Profiler will display the relevant analysis. Or, in the frame time graph, you can right-click and select Select Median Frame.
You can also limit your analysis to a selection of frames. All of the statistics you see will be updated to reflect the specific selection.
Rather than rely on a single data point from a single frame, you can analyze multiple data points by selecting a group of representative frames. If you right-click on the frame time graph and Order by Frame Duration, you can then select a set of frames around the median frame for a representative sample that smooths out some of the noise in your data.
El efecto de cambiar un ajuste del proyecto
Profile Analyzer puede ayudarte a determinar la diferencia en el rendimiento al aplicar un ajuste que afecta todo el proyecto; por ejemplo, habilitar Graphics Jobs (trabajos de gráficos). Para utilizar esta función, toma una instantánea de referencia y, luego, toma otra después de hacer los cambios. Ejecuta tu juego, toma una muestra de él con Unity Profiler, agrega la muestra a Profile Analyzer y, luego, añade la segunda muestra.
Puedes ver los resultados de ambas muestras, o instantáneas, lado a lado en la sección Frame Summary (resumen de frames).
Are you GPU-bound?
Para asegurarte de que tu rendimiento no tenga ningún cuello de botella, revisa el marcador Gfx.WaitForPresent. Para encontrarlo, escribe Gfx.WaitForPresent en el área de filtrado. Si la mediana de ese marcador es diferente de cero, entonces el CPU está esperando que la GPU complete su actividad para poder continuar.
Puedes observar ese marcador en el gráfico de frametime (tiempo de frames) para ver cuánto contribuye al frametime. Si el CPU está esperando a la GPU, significa que es muy probable que tu contenido dependa de la GPU. Consulta las herramientas de análisis del perfil de GPU para hacer algunas optimizaciones.

Administración de conjuntos de datos
Puedes administrar los datos en la sección superior principal de la ventana de Profile Analyzer. Desde ahí, puedes abrir Unity Profiler y hacer clic en "Pull Data" (extraer datos) de Unity Profiler o cargar un archivo previamente guardado (de cualquier versión de Unity).
Una vez que hayas cargado los datos, los verás en el gráfico de frametime. Es una región interactiva en la que puedes seleccionar un intervalo de muestras. Toda la información de resumen en la tabla de marcadores se actualizará automáticamente para reflejar tu selección. Puedes acceder a opciones más avanzadas mediante un clic derecho sobre el contenido seleccionado.
Puedes hacer clic en el botón "Save" (guardar) para guardar los datos de tu análisis como un archivo .pdata. Ten en cuenta que se generan dos archivos: un archivo de Profile Analyzer (.pdata) y uno de Profiler (.data o .raw). Recomendamos guardar ambos archivos en el mismo directorio.
Frame Summary
Frame Summary (resumen de frames) muestra detalles destacados sobre el tiempo de frames, incluido el mínimo, el máximo y la mediana, con botones que te permiten ir directamente a frames específicos en Unity Profiler. Esta área también muestra el histograma de distribución de frametime y un diagrama de caja.

Tabla de marcadores
Detalles de los marcadores
En esta sección, encontrarás la tabla con los datos de los marcadores proporcionados por Unity Profiler, incluidas todas las profundidades de pila (stack depths). Los datos de Unity Profiler para todos los marcadores se agregan para calcular la mediana y otros frametimes, que también se muestran en esta tabla.
Marker Summary
El área Marker Summary (resumen de marcadores) a la derecha contiene información agregada sobre los marcadores seleccionados y su contribución al frametime. Esta información también se presenta de forma visual en un histograma y un diagrama de caja.
En la parte inferior del resumen, verás los tiempos mínimo y máximo de instancias de marcadores individuales dentro del conjunto de datos agregados.

Filtros
- Name (nombre)
Para centrar tu análisis en marcadores con un nombre específico, puedes ingresar una subcadena o una colección de subcadenas. Si el nombre contiene espacios, asegúrate de encerrar la subcadena entre comillas.
Puedes excluir los marcadores que no te interesan. Por ejemplo, puedes excluir aquellos basados en el tiempo de inactividad en Jobs (trabajos) o aquellos que forman parte del Profiler en sí.
Puedes completar los filtros haciendo clic derecho sobre un marcador que te interese en la tabla.
- Threads (hilos)
Puedes elegir ver los datos correspondientes a hilos de trabajos específicos. Para verlos todos en forma agregada, marca "All" (todos) en la parte superior de la ventana emergente "Select" (seleccionar) de Thread.
- Depth (profundidad)
Recomendamos buscar en la profundidad 3 porque la mayoría de los subsistemas de Unity tienen marcadores de alto nivel en ese nivel. Así, verás la contribución de subsistemas clave tales como renderizado, animación y física. (Depth 3 es adecuada para las versiones recientes de Unity. En las versiones anteriores, quizás te resulte más adecuada otra profundidad).
- Parent (elemento principal)
Para filtrar por elemento principal, haz clic derecho sobre el marcador en la tabla de marcadores y selecciona Set as Parent Marker Filter (establecer como filtro principal de marcadores).
- Tipo de análisis
De manera predeterminada, Profile Analyzer muestra el tiempo Total de los marcadores pero puedes cambiarlo a Self time (tiempo propio). El tiempo propio es útil si deseas ver más detalles para detectar en qué se utiliza tu tiempo realmente.
- Units (unidades)
Las unidades predeterminadas son los milisegundos, pero, si deseas una unidad menor, puedes cambiar a microseconds (microsegundos).
Los 10 marcadores principales
Los 10 marcadores principales corresponden a los filtros que estableciste. La mejor forma de usar esta herramienta es seleccionar Main Thread (hilo principal) y el tiempo total incluidos los hijos (children) en la profundidad 3 para observar los subsistemas de Unity. Así, verás la medida en que cada uno de esos subsistemas clave contribuyen, por ejemplo, al tiempo de renderizado frente al de física frente al de animación. Si deseas más detalles de informes y análisis, puedes desplazar el cursor sobre la barra de datos para ver las métricas y porcentajes exactos.

Comparación de los conjuntos de datos
En la parte superior de la ventana de Profile Analyzer, puedes cambiar a la pestaña Compare (comparar) a fin de seleccionar dos conjuntos de datos para comparar. Un conjunto de datos se muestra en azul y el otro en naranja. O puedes elegir comparar dos subregiones de un mismo conjunto de datos, por ejemplo, para comparar los frames de la mediana con los frames de los extremos.
La tabla de comparación de los marcadores representa visualmente los datos con los colores azul y naranja, para que puedas ver rápidamente cuál de los dos conjuntos de datos se está ejecutando con más lentitud en ciertas áreas.
Si el marcador no aparece en alguno de los análisis, verás un guion en esa columna. Esto puede suceder, por ejemplo, si se cambió el nombre del marcador, lo cual es posible si usas versiones de Unity diferentes.
Exportación de datos
Recuerda que puedes exportar los datos de Profile Analyzer para obtener un procesamiento más personalizado. Puedes exportar el contenido de la tabla de marcadores, el gráfico de frametime o una comparación de los gráficos de frametime.
Si tienes preguntas sobre Profile Analyzer, el Profiler o cómo usar algunas de sus funciones específicas para tu proyecto, únete a las conversaciones en los foros.