Upload
oriol-jimenez
View
517
Download
1
Tags:
Embed Size (px)
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