Ya ni recuerdo cómo llegué a un artículo titulado
"Is Java 7 ready for the multicore revolution?", pero lo importante es que me abrió la cabeza un poco hacia otras ideas. Lo cierto es que el multicore ya está aquí desde hace rato y la única forma de aumentar la performance de nuestras aplicaciones será el desarrollo de aplicaciones concurrentes. Esto (en mi caso) está muy bueno, ya que me interesan muchísimo los problemas derivados de
threading.
Por supuesto, el aumento de la performance va a depender de muchísimas cosas, la primera de ellas es el tipo de aplicación que se desarrolle, por ejemplo:
- Si tenemos una aplicación de escritorio para diseño de escenarios 3D, sin duda va a requerir muchísimo procesamiento.
- Si estamos desarrollando (o corriendo) un video juego de los buenos, necesitamos mucha capacidad de proceso.
- Pero si tenemos una aplicación de escritorio (o web), que envía requests de información a un servidor, quizá ya no necesitemos tanto procesamiento, sino capacidad de manejar una gran cantidad de datos.
En este último punto me voy a detener. Porque no he estado analizando el problema de la performance de las aplicaciones como
un sistema. Me gusta un artículo (un poco viejo) pero que me ayudó a darme cuenta de que la ejecución de un software depende de muchísimas cosas, no sólo de la capacidad de procesamiento, sino por ejemplo, de la capa de datos, como lo afirma
casi como un Talibán de los datos, Daniel Lemire, en su artículo "
Multicore Programming? YAWN!".
Entonces, ¿Qué demonios hago? ¿Aprendo multithreading? ¿Me uno al grupo de cluster de Tuza? ¿Me hago DBA? ¿Sigo haciendo experiencia en .NET?
Sólo el tiempo lo dirá, por el momento voy a hacer todo,
menos unirme al grupo de cluster (perdón Tuza).
Y ya que estoy, les dejo un librito (sencillo y rápido de leer):
How to survive the Multicore Software Revolution (or at least survive the hype)SaludosPablo