Pintores vs. embarazadas

Muchas veces nos planteamos como mejorar el rendimiento de tal o cual aplicación, site, etc…
Lo primero que debemos hacer es identificar qué estrategia debemos seguir para mejorar el rendimiento y claro sin conocer como funciona la aplicación, lo tenemos complicado.

Básicamente existen dos tipos de aplicaciones las que siguen el modelo de los pintores o las embarazadas.

  • Supongamos que tenemos una pared a pintar, cuantos más pintores (y brochas, potes de pintura, etc..) dispongamos, antes terminaremos de pintarla. Con lo cual reducimos el tiempo de entrega a 1/#pintores.
  • Pero por otro lado tenemos las embarazadas, una embarazada tarda una media de 9 meses en tener a su bebé, pero si tenemos 9 embarazadas, no tendremos 1 bebé en 1 mes, sino que tendremos 9 bebés al cabo de 9 meses. Por tanto hemos incrementado nuestra capacidad,pero no hemos mejorado en nada el tiempo de entrega.

Visto asi tenemos aplicaciones paralelizables en tanto que añadiendo más capacidad reducimos el tiempo de entrega y aplicaciones no paralelizables (secuenciales) donde es completamente imposible reducir el tiempo de entrega si no cambiamos algunos de los parametros (en lugar de bebés humanos,podriamos buscar bebés perro)

Todo esto ya lo describió en su momento Gene Amdahl en su famosa ley de Amdahl, así que no descubro nada nuevo 🙁 pero tampoco me tengo que poner a deducir ecuaciones :).

Por tanto, lo primero que tenemos que hacer al intentar mejorar el rendimento de algo es dilucidar si lo que queremos es más capacidad (embarazadas) o bien reducir tiempos de espera (pintores), e intentar que el hecho de que reducir tiempo de espera nos permita atender a más usuarios o que el incremento de capacidad reduzca el tiempo de espera en cola nos lie y acabemos con algo no escalable eficientemente.

Update: Buscando lo bien indexado que estaba he encontrado este PPT de Intel donde utilizan tambien la analogia de Pintores y ley de Amdahl. Curioso 🙂