martes, 27 de diciembre de 2011

¿Qué tarjeta gráfica pongo en un servidor de aplicaciones JEE?

Teniendo en cuenta que un servidor de aplicaciones va a dedicarse fundamentalmente a atender transacciones HTTP, lo natural es pensar que su tarjeta gráfica va a ser de escasa utilidad, salvo para la propia consola. Y eso es cierto, pero desde la versión 1.4 de Java, el API Java 2D es capaz de aprovechar la GPU de la tarjeta gráfica para delegar en ella operaciones costosas como cambiar de escala una imagen, dibujar sombreados...

Si la aplicación web que estamos desarrollando requiere transformar imágenes almacenadas en un repositorio o requiere generar gráficos, incluso dibujar sencillos diagramas de barras, la aceleración aportada por la tarjeta gráfica puede liberar a la CPU de mucho trabajo.

El problema en la práctica no es trivial, puesto que tanto la disponibilidad de aceleración por hardware como su rendimiento práctico dependen del sistema operativo, del modelo de tarjeta gráfica, de la versión de Java y de la disponibilidad de rendering pipelines para OpenGL, DirectDraw, Direct3D o X11. El rendimiento también depende de los métodos concretos del API Java 2D que se utilicen, puesto que la aceleración puede no estar implementada en todos ellos. Son muchas las posibles combinaciones, por lo que resulta difícil dar recetas.

Recientemente, entre dos enfoques distintos para el mismo tratamiento de ciertas imágenes, encontré una proporción de velocidades de 200 a 1. Es tanta la diferencia que merece la pena tomarse la molestia de buscar la forma de aplicar la aceleración gráfica, no sólo en aplicaciones  de escritorio, sino también en aplicaciones web que transforman o generan imágenes. Entonces tendrás tu respuesta a la pregunta que da título a esta entrada.

No hay comentarios:

Publicar un comentario