Slide 1

Slide 1 text

Performance Matters! Fast Andreas

Slide 2

Slide 2 text

Típico día de trabajo Tareas Implementación Tests Revisión de Código Deploy Feedback Pocas veces pensamos en la performance!

Slide 3

Slide 3 text

Las aplicaciones son para los usuarios. Por qué importa?

Slide 4

Slide 4 text

UX Según Nielsen Norman Group 0 - 100ms ~> instantánea

Slide 5

Slide 5 text

100ms - 1s ~> fluida

Slide 6

Slide 6 text

1 - 10s ~> mantiene la atención

Slide 7

Slide 7 text

> 10s ~> se distrae y abandona el sitio

Slide 8

Slide 8 text

En 2011 el tiempo de carga promedio de las páginas web era de 4.9s! Loading...

Slide 9

Slide 9 text

Un estudio realizado por Fiona Fui-Hoon Nah en la Universidad de Nebraska, arrojó que los tiempos de espera tolerables se han reducido a...

Slide 10

Slide 10 text

Afecta nuestro negocio Google Search 2006 ~> 500ms más lento, 20% menos tráfico 2011 ~> 400ms más lento, 44% menos tráfico

Slide 11

Slide 11 text

Amazon 2006 - 100ms más lento, 1% baja en ventas ~ $107 millones

Slide 12

Slide 12 text

¿Cómo mejorar la performance? medir optimizar testear TIPS!

Slide 13

Slide 13 text

Es fundamental para determinar el efecto de un cambio. Medir

Slide 14

Slide 14 text

Tener claro el objetivo y utilizar las herramientas adecuadas. Datos y volúmenes reales

Slide 15

Slide 15 text

3 formas de obtener métricas

Slide 16

Slide 16 text

Test de concurrencia Cantidad de usuarios concurrentes

Slide 17

Slide 17 text

● Tiempo de procesador ● Cantidad de memoria utilizada ● Cantidad de objetos ● Información del GC Test de benchmarking

Slide 18

Slide 18 text

010101111011101010101011111111010101 010010111110111101010101011111111010 010101111011101010101011111111010101 010010111110111101010101011111111010 010101111011101010101011111111010101 010010111110111101010101011111111010 010101111011101010101011111111010101 010010111110111101010101011111111010 010101111011101010101011111111010101 010010111110111101010101011111111010 010101111011101010101011111111010101 010010111110111101010101011111111010 Test de profiling Análisis en profundidad de métodos invocados

Slide 19

Slide 19 text

Tips!

Slide 20

Slide 20 text

Base de Datos

Slide 21

Slide 21 text

No content

Slide 22

Slide 22 text

Queries lentas e índices

Slide 23

Slide 23 text

Uso inadecuado de la DB Ej: cola de mensajes

Slide 24

Slide 24 text

Herramientas Percona toolkit Analizar slow query log - pt-query-digest Query Reviewer - MySQL

Slide 25

Slide 25 text

Query Reviewer

Slide 26

Slide 26 text

Framework

Slide 27

Slide 27 text

1.9.3 + Rápido que 1.9.2 2.0 tiene optimizaciones En algunos casos jRuby es más rápido Versión de Ruby

Slide 28

Slide 28 text

Quitar gemas que no se usen

Slide 29

Slide 29 text

Conocer el framework Asset pipeline Turbolinks Mailer

Slide 30

Slide 30 text

Herramientas Rails Footnotes New Relic

Slide 31

Slide 31 text

Rails Footnotes

Slide 32

Slide 32 text

Código

Slide 33

Slide 33 text

Si el resultado no cambia Cachealo! Cachealo!

Slide 34

Slide 34 text

Evitar consultas innecesarias a la DB

Slide 35

Slide 35 text

Diseño general de la solución

Slide 36

Slide 36 text

Perftools.rb

Slide 37

Slide 37 text

Tests

Slide 38

Slide 38 text

Test Validar el cambio Tests más rápidos

Slide 39

Slide 39 text

Ben Orenstein - http://goo.gl/FCeIg - @r00k ● Evitar salvar objetos a la base de datos ● Reducir el startup de rails (gc patch, gems) ● Usar Stubs

Slide 40

Slide 40 text

Performance Matters La experiencia de usuario importa Los usuarios prefieren una experiencia fluida a una glamorosa Todos se benefician!

Slide 41

Slide 41 text

Performance Matters! @ahfast