Object Pool and Caching


Este es un agregador de feeds de blogs relacionados con la Plataforma Flash de Adobe, no es el creador de los contenidos que contiene.

Este post fue creado por Sergi Dote Teixidor en el blog http://www.madeinflex.com.
Deberías haber sido redirigido al post original mediante Javascript, de no se así puedes acceder a él desde el siguiente enlace:
http://www.madeinflex.com/2010/02/01/object-pool-and-caching/

Post agregado:

Seguramente alguna vez hemos oído o leído sobre los conceptos de “pool de objetos” o “cache de objetos”. En este artículo quiero darles un vistazo en profundidad. Son conceptos que pueden confundirse, es por esto que intentaré resaltar las diferencias entre ambos conceptos después de haber investigado un poco.

Definiciones

Son patrones orientados a objetos muy potentes y muy usados en diferentes tecnologías, sobre todo en J2EE.

Cuando hablamos de pool, ésta se concibe como una colección de objetos sin estado. Algunos ejemplos serían una pool de conexiones a base de datos o una pool de item renderers.

En cambio, la cache se define como una colección de objetos con estado definido, por ejemplo, cuando trabajamos con servicios con una capa como puede ser Spring, los servicios se cachean.

La diferencia más importante entre estos dos conceptos está en lo que contienen, es decir, usaremos una cache cuando nos interese guardar un estado de un objeto concreto. En cambio usaremos una pool cuando necesitamos guardar objetos de los cuales no nos importa perder su estado.

Otras consideraciones importantes son:

  • Cuando pedimos un objeto de una pool, se nos puede servir cualquier objeto de esta pool.
  • En cambio, cuando pedimos un objeto de una cache, esperamos un objeto específico de esta cache.
  • Si todos los objetos de la pool están en uso cuando pedimos un elemento, esperaremos hasta que se libere cualquier objeto o se cree uno, si es necesario.
  • Si todos los objetos de la cache están en uso cuando se pide uno, tocará esperar hasta que el objeto deseado esté libre, aunque hubiera muchos elementos disponibles en la cache, ya que nos interesa uno concreto.
  • El tamaño de una pool puede variar según el número de recursos que necesitemos en un momento determinado.
  • El tamaño de una cache suele ser fijo.

Implementación

Podemos decir que la manera más habitual una cache se representa como un diccionario, es decir, como una colección de parejas id-value, de manera que cuando necesitamos un recurso determinado, éste es buscado en el diccionario y se devuelve el valor.

Para representar una pool, también podemos hacerlo con un diccionario, pero se suele crear una clase que controle los recursos, con una lógica no tan sencilla como la de una cache.

Sobre las pools

Una pool de objetos puede ofrecer una mejora de rendimiento en una aplicación. Es adecuada en aquellas situaciones en la que nos puede penalizar el proceso de creación de objetos o en las que el número de objetos de un determinado tipo puede hacer degradar el rendimiento la aplicación.

En la siguiente imagen se muestra un ejemplo típico de Pool:

pool

La pool está implementada como un singleton, el cual nos permite pedir un elemento, liberar un elemento o settear el valor máximo de elementos que la pool puede albergar.

Las pools se diferencian en tres tipos:

  1. No comments yet.
(will not be published)

Powered by WP Hashcash


Get Adobe Flash playerPlugin by wpburn.com wordpress themes