Thinking of CPU and Memory (1.0)

Preview:

Citation preview

(Code for Responsiveness)

Thinking of CPU & Memory

Terminado!

La aplicación funciona

Por que?

1 de cada 4 personas abandona una web que tarda más de 4 segundos en cargar

Por que?

● Amazon: +100ms = -1% ventas● Google: un incremento de 0.4 segundos a

0.9 segundos en carga de pàgina equivale a un descenso de tràfico e ingresos del 20%

● Apps móviles?

Cada vez somos más vagos exigentes

El concepto

Caso clásico:1. Descargas datos (cache de Strings)2. Parseas (cache de objetos)3. Descargas más datos: imágenes, etc (LruCache)4. Cargas en memoria (mantenerlos en memoria)5. Los muestras en pantalla

Don't be a Java Hero

"Tengo la impresión de que Java fue diseñado para hacer que fuera difícil escribir mal código, mientras que Python está diseñado para hacer

que sea sencillo escribir buen código."– Magnus Lycka

Como?

● Las splash-screens són malignas● No hacer trabajos en el UI Thread● No bloquear la UI (ProgressDialogs...)● No descargar los mismos datos 2 veces

○ nos centraremos en este punto

Strict Mode

.penaltyLog()

.penaltyDeath()

Red(Enemigo nº 1)

DDMS (Network Statistics)

Red (Análisis)

12s -> 0.4s (wifi mala, móvil bueno)

Red (tip 1)

LruCache+DiskLruCache

● Displaying Bitmaps Efficiently (Android Developers)

● https://github.com/koush/UrlImageViewHelper○ No gestiona bien vistas recicladas (aún)

Red (tip 2)

CPUNo todos los móviles son de 4 núcleos

Traceview (code y DDMS)

CPU (Análisis)

Guardar i leer object

7s -> 0.8s (móvil malo)

Mostrar datosviejos siempre

Memória RAMSi no compartes, te echan

$ adb shell procrank

Mantener la aplicación en memoria (Análisis)

Mantener la aplicación en memoria (Tip)

● Heap dump (memoria por objetos)● Eclipse MAT (memoria por objetos)● PerfMon (memoria, cpu, red en float)● Usage Timelines Pro (cpu, memoria)● traceview (cpu)

Otras utilidades

● Guardar un long en Application y mostrar un Toast con la diferencia al mostrar los primeros datos

● Enviar por analytics velocidades de boot

Detectar regresiones

"Donald Knuth"

"La optimización prematura es la raíz de todos los males"

Reférencias

● Google I/O 2012 - Doing More With less: Beign a Good Android Citizen

● Designing for Performance (developer.android.com)● "Displaying Bitmaps Efficiently" Android Developers

twitter: @oriolj+Oriol Jiménez

Recommended