El analizador de perfiles es una de las muchas funciones que se tratan en el libro electrónicoGuía definitiva para crear perfiles de juegos de Unity. Esta guía de más de 70 páginas reúne conocimientos avanzados y consejos de expertos externos e internos de Unity sobre cómo crear perfiles de una aplicación en Unity, administrar su memoria y optimizar su consumo de energía de principio a fin.
Tutorial del analizador de perfiles
¿Quieres saber dónde mejorar 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? El analizador de perfiles le ayudará a responder este tipo de preguntas.
Si bien el Unity Profiler estándar le permite realizar análisis de un solo cuadro, el Profile Analyzer puede agregar y visualizar datos de marcadores de perfiles capturados a partir de un conjunto de cuadros de Unity Profiler.
El Analizador de perfiles le ayuda a identificar dónde centrar sus esfuerzos. Le proporciona una manera de comparar dos capturas de perfiles de rendimiento de Unity una al lado de la otra e inspeccionar los impactos de sus cambios.
El analizador de perfiles complementa el análisis de fotograma único ya disponible en Unity Profiler. Agrega y visualiza datos de cuadros y marcadores de una variedad de cuadros de Unity Profiler para ayudarlo a ver patrones de rendimiento a lo largo del tiempo de alto nivel en muchos cuadros.
Profile Analyzer realiza un análisis del rendimiento de la CPU en varios fotogramas de los fotogramas de la sesión actual de Profiler o de capturas guardadas previamente. La herramienta viene con estadísticas y visualizaciones para ayudarlo a analizar rápidamente la información almacenada en las capturas. Su función de filtrado completo también le permite profundizar en las secciones que le interesan. Puede usarlo para comparar dos conjuntos de datos o puede exportar datos sin procesar para analizarlos con otras herramientas.
Puede instalar el Analizador de perfiles a través de Ventana > Administrador de paquetes.
Estos consejos de creación de perfiles pueden ayudarle a empezar a utilizar Profile Analyzer:
Consigue una captura representativa y repetible.
Cierre todas las demás aplicaciones. Puedes usarProfiler.logFileen tus scripts de C# para escribir datos de perfil directamente desde el juego en ejecución, lo que significa que no necesitas que el Editor esté abierto. Escribe un archivo.rawque luego puede cargar en Unity Profiler.
Deshabilite cualquier función de mejora o escalado del rendimiento del hardware de la CPU para no sufrir cambios en la frecuencia del reloj, como Intel SpeedStep o AMD Precision Boost.
El analizador de perfiles puede ayudarle a responder preguntas sobre optimización y rendimiento que puedan surgir durante el ciclo de vida de desarrollo de su proyecto. Por ejemplo, en una captura de juego de 300 fotogramas o una secuencia de carga de 20 segundos:
¿Cuáles son los mayores costos de CPU en los subprocesos principal y de procesamiento?
¿Cuál es el costo medio/mediano/total de cada uno de esos marcadores?
Utilice el analizador de perfiles para profundizar en las características de rendimiento de su código ejecutado en varios fotogramas o incluso en diferentes capturas de sesiones para el análisis antes y después.
Más consejos al comparar datos con Profile Analyzer:
Profundice en los scripts de usuario (ignorando los niveles de API de Unity Engine) seleccionando un nivel de profundidad de 4 (los niveles de profundidad muestran información sobre dónde están los marcadores en la jerarquía). Después de filtrar a este nivel y observar el Generador de perfiles en el modo Línea de tiempo, puede correlacionar la profundidad de la pila de llamadas para hacer una selección aquí: los scripts de monocomportamiento aparecerán en azul y estarán en el cuarto nivel hacia abajo. Esta es una manera rápida de ver si tu lógica específica y tus scripts de juego son agotadores por sí solos sin ningún otro "ruido".
Filtre datos de la misma manera para otras áreas del motor Unity, como animadores o física del motor, utilizando un nivel de pila de profundidad de 3.
En el lado derecho de la sección Resumen de fotogramas, encontrará el histograma de rango de rendimiento del método resaltado. Pase el cursor sobre el número de fotograma máximo (el fotograma exacto en el que se encontró el tiempo máximo) para obtener un enlace en el que se puede hacer clic para ver la selección de fotogramas en Unity Profiler. Utilice esta vista para analizar otros factores que potencialmente contribuyen al alto tiempo máximo de fotograma.
Si desea ver cómo la llamada a una función afecta el rendimiento, utilice el método Unity Profiler o Profiler.logFile para capturar sus datos. Si está utilizando Unity Profiler, puede hacer clic en el botón Extraer datos para cargarlos en Profile Analyzer. De lo contrario, puede cargar una captura de datos previamente guardada desde un archivo.
Tan pronto como haga eso, el análisis comienza inmediatamente y los datos completan el gráfico de tiempo del marco. Observe las barras blanca y cian en el gráfico. Las barras blancas representan la duración de los fotogramas y las barras cian representan el marcador seleccionado actualmente. Esto le permite comparar la contribución del marcador seleccionado con el tiempo total del fotograma.
Puede buscar marcadores usando Filtros. 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 selecciona un marcador, el panel de detalles Resumen del marcador también se actualiza para mostrar estadísticas de análisis para ese marcador en particular.
Al analizar el rendimiento, debe asegurarse de que los datos que está analizando sean representativos. Si tus datos contienen ruido, utiliza el sector Frame Summary (resumen de frames) situado en la esquina superior derecha para asegurarte de seleccionar un frame promedio. Simplemente, haz clic en el frame que se muestra como Median (la mediana) y el Profiler mostrará el análisis correspondiente. Alternativamente, usando el gráfico de tiempo del cuadro, haga clic derecho y seleccione Seleccionar cuadro mediano.
También puede limitar su análisis a una selección de fotogramas. Todas las estadísticas que vea se actualizarán para reflejar la selección específica.
En lugar de depender de un único punto de datos de un único fotograma, puede analizar varios puntos de datos seleccionando un grupo de fotogramas representativos. Si hace clic con el botón derecho en el gráfico de tiempo de fotograma y en Ordenar por duración de fotograma, podrá seleccionar un conjunto de fotogramas alrededor del fotograma medio para obtener una muestra representativa que suavice parte del ruido de sus datos.
El analizador de perfiles puede ayudar a determinar la diferencia de rendimiento al aplicar una configuración para todo el proyecto, como habilitar 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. Ejecute su juego, pruébelo con Unity Profiler, lleve esa captura al Profile Analyzer y luego introduzca la segunda.
Puedes ver los resultados de las dos capturas una al lado de la otra en la sección Resumen del fotograma.
Para asegurarse de que su rendimiento no tenga cuellos de botella, verifique el marcador Gfx.WaitForPresentOnGfxThread en el hilo principal. Encuéntrelo escribiendo Gfx.WaitForPresentOnGfxThread en el área de filtro. Si el valor mediano de ese marcador es distinto de cero, entonces la CPU está esperando a que la GPU finalice su actividad antes de poder continuar.
Puedes mirar ese marcador en el gráfico de tiempo de fotograma para ver cuánto contribuye al tiempo de fotograma. Si la CPU está esperando a la GPU, lo más probable es que esté vinculado a la GPU. Confirme este escenario mirando el perfil del hilo de renderizado para detectar la presencia de marcadores Gfx.PresentFrame o <GraphicsAPIName>.WaitForLastPresent. Consulte nuestro libro electrónico Guía definitiva para crear perfiles de juegos Unity para obtener más ayuda, o eche un vistazo a las herramientas de creación de perfiles de GPU para ver dónde puede realizar algunas optimizaciones.
Puede administrar sus datos desde la sección superior de la ventana del Analizador de perfiles. Desde aquí puede abrir Unity Profiler y “Extraer datos” de Unity Profiler o cargar un archivo previamente guardado (cualquier versión de Unity).
Una vez que haya cargado sus datos, los verá en el gráfico de tiempo del cuadro. Esta es una región interactiva donde puede seleccionar una variedad de muestras; Toda la información resumida en la tabla Detalles del marcador se actualizará automáticamente para reflejar su selección. Puede acceder a opciones de selección avanzadas haciendo clic derecho en el gráfico de tiempo de fotograma.
Haga clic en el botón Guardar para guardar los datos de su análisis como un archivo .pdata. Tenga en cuenta que hay dos tipos de formatos de archivo: un archivo guardado de Profile Analyzer (.pdata) y un archivo guardado de Profiler (.data o .raw). Recomendamos guardar ambos archivos en el mismo directorio.
El Resumen de fotogramas (en el lado derecho de la ventana del Analizador de perfiles) muestra aspectos destacados del tiempo del fotograma, incluidos el mínimo, el máximo y la mediana, con botones que le permiten saltar a fotogramas específicos en el Generador de perfiles. Esta área también muestra el histograma de distribución del tiempo del cuadro y un diagrama de caja y bigotes.
Detalles del marcador
En esta sección, encontrará la tabla de marcadores de los datos de los marcadores del Profiler, incluidas todas las profundidades de la pila. Los datos de Unity Profiler para todos los marcadores se agregan para proporcionar la mediana y otros tiempos de cuadros, que también se muestran en esta tabla. También es posible filtrar estos detalles a "porciones" específicas de profundidad de pila.
Resumen de marcadores
El área Resumen de marcadores a la derecha contiene información agregada sobre los marcadores seleccionados y su contribución al tiempo del fotograma. Esta información también se presenta visualmente en un histograma y un diagrama de caja y bigotes.
En la parte inferior del resumen, encontrará los tiempos mínimos y máximos para instancias de marcadores individuales dentro del conjunto de datos agregados.
Por nombre
Puede escribir una subcadena o una colección de subcadenas para centrar su revisión en marcadores con un nombre específico. Si el nombre contiene espacios, asegúrese de poner comillas alrededor de la subcadena.
Puede excluir los marcadores que no le interesen. Por ejemplo, puede excluir marcadores según el tiempo de inactividad en Trabajos o los marcadores que forman parte del propio Profiler.
También puede completar filtros de marcadores haciendo clic derecho en un marcador de interés en la tabla y agregándolo a la selección de filtros.
Quitar filtro
También puede optar por ocultar de los datos un marcador y todas las muestras secundarias debajo de estos marcadores, tanto en las tablas como en el gráfico. Esta es una opción principalmente para eliminar VSync/tiempo de espera en dispositivos iOS y Android. Dos marcadores comunes ya están preconfigurados y se pueden elegir a través del menú desplegable etiquetado Eliminar: Ninguno. Estos marcadores se llaman FPS Wait y Present Wait. Para casos de uso más avanzados, puede eliminar marcadores seleccionando y eligiendo la opción Eliminar marcador en el menú contextual del botón derecho.
Sólo puedes eliminar un marcador a la vez; Puede volver a agregar un marcador eligiendo Ninguno en el menú desplegable.
Hilos
Puede optar por ver datos de subprocesos de trabajo específicos. Para verlos todos agregados, marque "Todos" en la parte superior de la ventana emergente Seleccionar hilo.
Profundidad
Recomendamos mirar 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. Para versiones anteriores, es posible que desee cambiar a otra profundidad).
Padre
Para filtrar por padre, haga clic derecho en el marcador en la tabla de marcadores y seleccione Establecer como filtro de marcador principal.
Tipo de análisis
De forma predeterminada, el Analizador de perfiles muestra el tiempo total de los marcadores, pero puede cambiar al tiempo propio. El tiempo libre es útil si desea profundizar en los detalles para ver dónde invierte realmente su tiempo.
Unidades
Las unidades predeterminadas son milisegundos, pero para tiempos más pequeños, puedes cambiar a microsegundos.
Esta parte de la ventana muestra los 10 marcadores principales de los filtros que ha seleccionado. La mejor manera de utilizar esta herramienta es seleccionar el hilo principal y el tiempo total para el tipo de análisis, incluidos los secundarios en la profundidad 3, para que pueda 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.
En la vista Comparar, use el menú desplegable Proporción para ajustar cómo el Analizador de perfiles dibuja los marcadores entre sí:
Normalizadomuestra los dos conjuntos de datos en relación con su propio tiempo en la profundidad seleccionada.
Más largomuestra la diferencia absoluta entre los dos conjuntos en la profundidad seleccionada.
Para obtener más informes y análisis, puede pasar el cursor sobre la barra de datos para ver los porcentajes y las métricas exactos.
En la parte superior de la ventana del Analizador de perfiles, puede cambiar a la pestaña Comparar para seleccionar dos conjuntos de datos para el análisis. Un conjunto de datos se muestra en azul y el otro en naranja. O puede optar por comparar dos subregiones de un único conjunto de datos, por ejemplo, para comparar sus marcos medianos con sus marcos atípicos.
La tabla de Comparación de marcadores representa visualmente los datos en azul y naranja, por lo que puede verificar rápidamente cuál de sus dos conjuntos de datos se ejecuta más lento en ciertas áreas.
Si el marcador no aparece en uno de los escaneos, verá un guión en esa columna. Esto puede suceder si se cambió el nombre del marcador, por ejemplo, si estás usando diferentes versiones de Unity.
Recuerde que puede exportar los datos del analizador de perfiles para su posterior procesamiento personalizado en formato de archivo CSV. Puede exportar el contenido de la tabla de marcadores, el gráfico de tiempo de fotograma, la tabla de comparación o una comparación de gráficos de tiempo de fotograma.
Si tiene preguntas sobre Profile Analyzer, Profiler o cómo utilizar sus funciones específicas para su proyecto, únase a las discusiones en los foros.
Al perfilar y perfeccionar el rendimiento de tu juego en una amplia gama de plataformas y dispositivos, puedes planificar mejor tu éxito y ampliar significativamente tu base de jugadores.
Como se mencionó al principio de este artículo, la guía definitiva del libro electrónico para crear perfiles de juegos de Unity proporciona muchas más instrucciones sobre cómo crear perfiles de sus proyectos de Unity.
También puedes ver esta sesión desde Unite Copenhagen. Es de 2019, pero aún ofrece excelentes consejos sobre Profile Analyzer.
Finalmente, encuentre todas las guías y artículos avanzados de Unity en el centro de mejores prácticas.