Download - Instruments 3 en 1
![Page 1: Instruments 3 en 1](https://reader033.vdocuments.co/reader033/viewer/2022060122/5595a13a1a28ab19448b4720/html5/thumbnails/1.jpg)
Instruments: el 3 en 1 de los desarrolladores
Juan A. Martín
![Page 2: Instruments 3 en 1](https://reader033.vdocuments.co/reader033/viewer/2022060122/5595a13a1a28ab19448b4720/html5/thumbnails/2.jpg)
Agenda
• Intro
• Algunos escenarios de uso:
• Memoria
• Gráficos
• UI
![Page 3: Instruments 3 en 1](https://reader033.vdocuments.co/reader033/viewer/2022060122/5595a13a1a28ab19448b4720/html5/thumbnails/3.jpg)
Intro
• Las Apps son cada vez más complejas, expuestas a factores externos, integradas con otros complementos (soft, hard)
• Necesitamos saber que sucede mientras nuestras Apps están siendo usadas
• Necesitamos saber por qué no funcionan como esperábamos
![Page 4: Instruments 3 en 1](https://reader033.vdocuments.co/reader033/viewer/2022060122/5595a13a1a28ab19448b4720/html5/thumbnails/4.jpg)
Intro
• Podemos conocer que sucede en nuestra App a través de dos herramientas:
• Gauges
• Instruments
![Page 5: Instruments 3 en 1](https://reader033.vdocuments.co/reader033/viewer/2022060122/5595a13a1a28ab19448b4720/html5/thumbnails/5.jpg)
Intro
• Gauges: integrado en el propio Xcode, nos proporciona información básica de CPU y memoria mientras depuramos
• Info básica pero muy util, p.e. si usamos colas y les ponemos nombre podemos ver la actividad del Thread a simple vista
![Page 6: Instruments 3 en 1](https://reader033.vdocuments.co/reader033/viewer/2022060122/5595a13a1a28ab19448b4720/html5/thumbnails/6.jpg)
![Page 7: Instruments 3 en 1](https://reader033.vdocuments.co/reader033/viewer/2022060122/5595a13a1a28ab19448b4720/html5/thumbnails/7.jpg)
Intro
• Cuando Gauges no cubre nuestras necesidades tenemos Instruments
• Instruments es una herramienta complementaria a Xcode, está incluida en el entorno.
![Page 8: Instruments 3 en 1](https://reader033.vdocuments.co/reader033/viewer/2022060122/5595a13a1a28ab19448b4720/html5/thumbnails/8.jpg)
Instruments• Instruments es una herramienta complementaria a Xcode, está
incluida en el entorno.
• Con Instruments podemos:
• Examinar el comportamiento de uno o varios procesos
• Hacer un análisis de rendimiento
• Automatizar test de UI
• Someter nuestras Apps a Stress
• …
![Page 9: Instruments 3 en 1](https://reader033.vdocuments.co/reader033/viewer/2022060122/5595a13a1a28ab19448b4720/html5/thumbnails/9.jpg)
Instruments
• Visión rápida de Instruments (ver instruments)
![Page 10: Instruments 3 en 1](https://reader033.vdocuments.co/reader033/viewer/2022060122/5595a13a1a28ab19448b4720/html5/thumbnails/10.jpg)
![Page 11: Instruments 3 en 1](https://reader033.vdocuments.co/reader033/viewer/2022060122/5595a13a1a28ab19448b4720/html5/thumbnails/11.jpg)
Instruments
• Requisitos: podemos utilizar la herramienta sobre los dispositivos o el simulador, en función al tipo de plantilla que usemos será necesario añadir alguna variable de entorno o setting de el dispositivo.
• Limitaciones: No siempre podemos aplicar las plantillas sobre los dispositivos (p.e. Core Data)
![Page 12: Instruments 3 en 1](https://reader033.vdocuments.co/reader033/viewer/2022060122/5595a13a1a28ab19448b4720/html5/thumbnails/12.jpg)
Instruments
![Page 13: Instruments 3 en 1](https://reader033.vdocuments.co/reader033/viewer/2022060122/5595a13a1a28ab19448b4720/html5/thumbnails/13.jpg)
Instruments
• Podemos personalizar la herramienta a nuestro antojo
• Crear plantillas para aplicar en nuestros proyectos
• Crear nuevos grupos
![Page 14: Instruments 3 en 1](https://reader033.vdocuments.co/reader033/viewer/2022060122/5595a13a1a28ab19448b4720/html5/thumbnails/14.jpg)
Instruments
• Grupos Custom nos permiten agrupar los contadores como mejor se ajusten a nuestras necesidades
• Demo
![Page 15: Instruments 3 en 1](https://reader033.vdocuments.co/reader033/viewer/2022060122/5595a13a1a28ab19448b4720/html5/thumbnails/15.jpg)
Instruments
• Las plantillas custom nos permiten agrupar varios tipos de instruments bajo el mismo documento y reutilizar para otros proyectos
• Demo
![Page 16: Instruments 3 en 1](https://reader033.vdocuments.co/reader033/viewer/2022060122/5595a13a1a28ab19448b4720/html5/thumbnails/16.jpg)
Instruments
• Captura de datos, podemos obtener de:
• All Processes
• Attach to Process
• Choose Target
![Page 17: Instruments 3 en 1](https://reader033.vdocuments.co/reader033/viewer/2022060122/5595a13a1a28ab19448b4720/html5/thumbnails/17.jpg)
Instruments• Captura de datos, pueden ser:
• Simulador
• Dispositivo conectado
• Sin conectar, ideal para apps deportivas :-)
• Necesitamos configurar la WIFI con Bojour y multicast -> ON en el AP
![Page 18: Instruments 3 en 1](https://reader033.vdocuments.co/reader033/viewer/2022060122/5595a13a1a28ab19448b4720/html5/thumbnails/18.jpg)
Instruments• Modos:
• La captura de datos con Instruments aumenta la carga y disminuye el rendimiento de la App analizada
• Es posible usar Instruments de manera alternativa: Deferred Mode (modo silencioso), no vemos la interfaz de la herramienta pero captura y genera un fichero con los datos recopilados
![Page 19: Instruments 3 en 1](https://reader033.vdocuments.co/reader033/viewer/2022060122/5595a13a1a28ab19448b4720/html5/thumbnails/19.jpg)
Instruments
• Modos:
• Hay plantillas que directamente no usan UI mientras capturan
• iprofiler
• $ iprofiler -timeprofiler -activitymonitor -T 10 -d ~/temporales/
![Page 20: Instruments 3 en 1](https://reader033.vdocuments.co/reader033/viewer/2022060122/5595a13a1a28ab19448b4720/html5/thumbnails/20.jpg)
Instruments
!
• DEMOS
![Page 21: Instruments 3 en 1](https://reader033.vdocuments.co/reader033/viewer/2022060122/5595a13a1a28ab19448b4720/html5/thumbnails/21.jpg)
![Page 22: Instruments 3 en 1](https://reader033.vdocuments.co/reader033/viewer/2022060122/5595a13a1a28ab19448b4720/html5/thumbnails/22.jpg)
memory leaks
![Page 23: Instruments 3 en 1](https://reader033.vdocuments.co/reader033/viewer/2022060122/5595a13a1a28ab19448b4720/html5/thumbnails/23.jpg)
Memory leaks
• A veces nuestras Apps no liberan las referencias de los objetos creados
• Con ARC este problema ha sido casi erradicado…. pero no exterminado.
• Es posible encontrar memory leaks en frameworks antiguos no ARC y sobre todo en APIs C.
![Page 24: Instruments 3 en 1](https://reader033.vdocuments.co/reader033/viewer/2022060122/5595a13a1a28ab19448b4720/html5/thumbnails/24.jpg)
Memory leaks
• Instruments nos ofrece una plantilla llamada Leaks, es usada siempre de manera conjunta con Allocations
• Si la app tiene algún leak, nos muestra el nombre de la clase del objeto que lo provoca o el código responsable
![Page 25: Instruments 3 en 1](https://reader033.vdocuments.co/reader033/viewer/2022060122/5595a13a1a28ab19448b4720/html5/thumbnails/25.jpg)
Memory leaks
![Page 26: Instruments 3 en 1](https://reader033.vdocuments.co/reader033/viewer/2022060122/5595a13a1a28ab19448b4720/html5/thumbnails/26.jpg)
Core Animation
![Page 27: Instruments 3 en 1](https://reader033.vdocuments.co/reader033/viewer/2022060122/5595a13a1a28ab19448b4720/html5/thumbnails/27.jpg)
Core Animation• Esta plantilla solo está disponible para capturar datos del
dispositivo
• Podemos medir y capturar la actividad de CA en nuestra App. Los datos los devuelve en fps
• los contadores son:
• Color Blended Layers.
• Color Hits Green and Misses Red
• etc…
![Page 28: Instruments 3 en 1](https://reader033.vdocuments.co/reader033/viewer/2022060122/5595a13a1a28ab19448b4720/html5/thumbnails/28.jpg)
Core Animation
• También tenemos plantillas especificas para OpenGL:
• Analizar el uso directo e indirecto de OpenGL
• Detectar posibles cuellos de botella en driver de OpenGL
![Page 29: Instruments 3 en 1](https://reader033.vdocuments.co/reader033/viewer/2022060122/5595a13a1a28ab19448b4720/html5/thumbnails/29.jpg)
UI Testing
![Page 30: Instruments 3 en 1](https://reader033.vdocuments.co/reader033/viewer/2022060122/5595a13a1a28ab19448b4720/html5/thumbnails/30.jpg)
UI Testing
• Una de las funcionalidades más interesantes, el desarrollo de Apps el peso de la UI es importante.
• Hacer Testing de la UI puede ser tan sencillo como usar tropas de testers “probando” o usar una herramienta que simule una sesión de un usuario y la ejecute las veces que sean necesarias
![Page 31: Instruments 3 en 1](https://reader033.vdocuments.co/reader033/viewer/2022060122/5595a13a1a28ab19448b4720/html5/thumbnails/31.jpg)
UI Testing
• Con instruments tenemos una plantilla llamada Automation
• Esta plantilla espera un script JS con la secuencia de navegación
• Desde esta plantilla tenemos un editor que nos permite capturar la navegación, traducirla a JS y ejecutarla
![Page 32: Instruments 3 en 1](https://reader033.vdocuments.co/reader033/viewer/2022060122/5595a13a1a28ab19448b4720/html5/thumbnails/32.jpg)
UI Testing
• Para que esto funcione tenemos que tocar nuestro código y establecer la propiedad Accesibility a ON, además del accesibiltyLabel de cada uno de los elementos que queremos capturar
• Cada script es exclusivo de una App, no es posible reutilizar
![Page 33: Instruments 3 en 1](https://reader033.vdocuments.co/reader033/viewer/2022060122/5595a13a1a28ab19448b4720/html5/thumbnails/33.jpg)
UI Testing• var target = UIATarget.localTarget();
!
• target.frontMostApp().tabBar().buttons()["UITest"].tap();
• target.frontMostApp().mainWindow().buttons()["Boton1"].tap();
• target.frontMostApp().mainWindow().buttons()["Boton2"].tap();
• target.frontMostApp().tabBar().buttons()["Animation"].tap();
• target.tap({x:248.00, y:86.50});
• target.tap({x:55.50, y:480.50});
![Page 34: Instruments 3 en 1](https://reader033.vdocuments.co/reader033/viewer/2022060122/5595a13a1a28ab19448b4720/html5/thumbnails/34.jpg)
Stress Test Tool
![Page 35: Instruments 3 en 1](https://reader033.vdocuments.co/reader033/viewer/2022060122/5595a13a1a28ab19448b4720/html5/thumbnails/35.jpg)
UI Testingfor ( i =0; i <100; i++){
var target = UIATarget.localTarget();
target.frontMostApp().tabBar().buttons()["UITest"].tap();
target.frontMostApp().mainWindow().buttons()["Boton1"].tap();
target.frontMostApp().mainWindow().buttons()["Boton2"].tap();
target.frontMostApp().tabBar().buttons()["Animation"].tap();
target.tap({x:248.00, y:86.50});
target.tap({x:55.50, y:480.50});
}
![Page 36: Instruments 3 en 1](https://reader033.vdocuments.co/reader033/viewer/2022060122/5595a13a1a28ab19448b4720/html5/thumbnails/36.jpg)
Análisis de Rendimiento Bottleneck, CPU, GCD…
![Page 37: Instruments 3 en 1](https://reader033.vdocuments.co/reader033/viewer/2022060122/5595a13a1a28ab19448b4720/html5/thumbnails/37.jpg)
Análisis de Rendimiento
• Tenemos varias plantillas que van desde una visión general de los contadores más básicos (CPU, Memoria) hasta la posibilidad de establecer PMCs sobre algunos aspectos específicos del hardware
![Page 38: Instruments 3 en 1](https://reader033.vdocuments.co/reader033/viewer/2022060122/5595a13a1a28ab19448b4720/html5/thumbnails/38.jpg)
Análisis de Rendimiento• Básicos
• Time Profiler, nos proporciona info básica del tipo tiempo de proceso, llamadas, etc…
• Activity Monitor
• System Trace: Es ejecutado en modo silencioso con el objetivo de no “molestar”, obtiene datos de Memoria (Allocations), CPU
![Page 39: Instruments 3 en 1](https://reader033.vdocuments.co/reader033/viewer/2022060122/5595a13a1a28ab19448b4720/html5/thumbnails/39.jpg)
Análisis de Rendimiento
• Un poco menos básicos
• Energia, GPS, Bluetooth
• Sampler, GCD, Connections
![Page 40: Instruments 3 en 1](https://reader033.vdocuments.co/reader033/viewer/2022060122/5595a13a1a28ab19448b4720/html5/thumbnails/40.jpg)
{ “me”: {“speaker” : “Juan A. Martin”, “company”: “CloudOnMobile”, “contact”: { "mail":"[email protected]”, "twitter":"@byjuanamn", "skype":"by-juanamn" }
} }
Muchas Gracias