Version: 2018.1
iOS-specific optimizations
Optimizing the size of the built iOS Player

Measuring performance with the built-in profiler

Unity iOS and Android contain a built-in profiler. The built-in profiler emits console messages from the game running on device. These messages are written every 30 seconds and will provide insight into how the game is running. Understanding what these messages mean is not always easy, but as a minimum, you should quickly be able to determine if your game is CPU or GPU bound, and if CPU bound whether it’s script code, or perhaps Mono garbage collection that is slowing you down. See later in this page to learn how to configure the built-in profiler.

What the profiler tells you

He aquí un ejemplo del output del perfilador integrado.

iPhone/iPad Unity internal profiler stats:
cpu-player> min: 9.8 max: 24.0 avg: 16.3
cpu-ogles-drv> min: 1.8 max: 8.2 avg: 4.3
cpu-waits-gpu> min: 0.8 max: 1.2 avg: 0.9
cpu-present> min: 1.2 max: 3.9 avg: 1.6
frametime> min: 31.9 max: 37.8 avg: 34.1
draw-call #> min: 4 max: 9 avg: 6 | batched: 10
tris #> min: 3590 max: 4561 avg: 3871 | batched: 3572
verts #> min: 1940 max: 2487 avg: 2104 | batched: 1900
player-detail> physx: 1.2 animation: 1.2 culling: 0.5 skinning: 0.0 batching: 0.2 render: 12.0 fixed-update-count: 1 .. 2
mono-scripts> update: 0.5 fixedUpdate: 0.0 coroutines: 0.0 
mono-memory> used heap: 233472 allocated heap: 548864 max number of collections: 1 collection total duration: 5.7

Todos los tiempos son medidos en mili-segundos por cuadro (frame). Usted puede ver el tiempo mínimo, máximo y promedio en los últimos treinta cuadros (frames).

General CPU activity

Property: Function:
cpu-player Muestra el tiempo que su juego gasta ejecutando código dentro del motor de Unity y ejecutando scripts en el CPU.
cpu-ogles-drv Muestra el tiempo que gasta ejecutando código del controlador OpenGL ES en el CPU. Mucho factores como el número de llamadas de dibujo, número de cambios de estado internos de renderizado, la configuración del pipeline de renderizado e incluso el número de vértices procesados pueden tener efecto en las estadísticas del controlador.
cpu-waits-gpu Muestra el tiempo que el CPU está sin actividad mientras espera por el GPU en finalizar el renderizado. Si este número excede los 2–3 mili-segundos entonces su aplicación está ligada a un procesamiento de fillrate/GPU. Si este valor es muy pequeño, entonces el perfilador salta mostrar el valor.
msaa-resolve The time taken to apply anti-aliasing.
cpu-present La cantidad de tiempo que se gasta ejecutando el comando presentRenderbuffer en OpenGL ES.
frametime Representa el tiempo en general de un cuadro (frame) de juego. Tenga en cuenta que el hardware de iOS siempre está bloqueado en una tasa de 60Hz de actualización, entonces usted siempre obtendrá tiempos de 16.7ms (1000ms/60Hz = 16.7ms).

Rendering statistics

Property: Function:
tris # El número Total de triángulos enviados para renderización.
verts # El número total de vértices enviados para renderización. Usted debería mantener este número debajo de 10000 si usted solo utiliza geometría estática, pero si usted tiene mucha geometría skinned entonces usted debería mantenerlo lo más bajo posible.
batched El número de llamadas de dibujo, triángulos y vértices que fueron automáticamente batched por el motor. Comparando estos números con llamadas de dibujo y los totales de triángulos le dará una idea de qué tan bien está su escena para batching. Comparta tantos materiales como sea posible a lo largo de sus objetos para mejorar el batching.

Detailed Unity Player statistics

The player-detail section provides a detailed breakdown of what is happening inside the engine:

Property: Function:
physx El tiempo gastado en física.
animation El tiempo gastado animando huesos.
culling El tiempo gastado omitiendo (culling) objetos afuera del troncocónico de la cámara.
skinning El tiempo gastado aplicando animaciones a skinned meshes.
batching El tiempo gastado batching geometría. Batching geometría dinámica es considerable más cara que batching geometría estática.
render El tiempo gastado renderizando objetos visibles.
fixed-update-count El número mínimo y máximo de FixedUpdates ejecutados durante este cuadro (frame). Muchos FixedUpdates van a deteriorar el rendimiento considerablemente.

Detailed script statistics

La sección de mono-scripts proporciona una ruptura detallada del tiempo gastado ejecutando código en el tiempo de ejecución de Mono:

Property: Function:
update El tiempo total gastado ejecutando todas las funciones Update() en scripts.
fixedUpdate El tiempo total gastado ejecutando todas las funciones FixedUpdate() en scripts.
coroutines El tiempo total gastado dentro de corrutinas de scripts.

Detailed statistics on memory allocated by scripts

La sección mono-memory le da a usted una idea de cómo la memoria está siendo manejada por el recolector de basura de Mono:

Property: Function:
allocated heap La cantidad de memoria total disponible para asignaciones. Un recolector de basura será activado si no hay suficiente memoria disponible en el heap de una asignación dada. Si todavía no hay memoria disponible suficiente incluso después de que se haya recolectado basura entonces el heap asignado aumentará en tamaño.
used heap La porción del allocated heap que actualmente está siendo utilizado por los objetos. Cada vez que usted crea una nueva instancia de clase (no struct) este número va a crecer hasta que venga el recolector de basura nuevamente.
max number of collections Número de pases de recolección de basura durante los últimos 30 frames.
collection total duration Tiempo total (en Milisegundos) de todos los pases de recolección de basura que han ocurrido durante los últimos 30 frames.

Configuración

En iOS, está deshabilitado por defecto. Para habilitarlo, abra el proyecto XCode generado por Unity, seleccione el archivo InternalProfiler.h y cambie la línea

 #define ENABLE_INTERNAL_PROFILER 0

para

 #define ENABLE_INTERNAL_PROFILER 1

Seleccione View > Debug Area > Activate Console en el menú de XCode para mostrar la consola de output (GDB) y luego corra su proyecto. Unity va a output estadísticas a la ventana de la consola cada treinta cuadros (frames).

To enable it on Android, click the Enable Internal Profiler (Deprecated) checkbox in PlayerSettings (Edit > Project Settings > Player). Make sure Development Build is checked in the Build Settings when building, and the statistics should show up in logcat when run on the device. To view logcat, you need adb or the Android Debug Bridge. Once you have that, simply run the shell command adb logcat.

iOS-specific optimizations
Optimizing the size of the built iOS Player