Ver Mensaje Individual
  #3 (permalink)  
Antiguo 19/07/2010, 11:24
GreenEyed
 
Fecha de Ingreso: octubre-2003
Mensajes: 3.578
Antigüedad: 20 años, 7 meses
Puntos: 51
Respuesta: Java en multiproceso

Scala acaba produciendo bytecode, el cual corre sobre la misma Maquina Virtual Java, así que el comportamiento en cuanto a uso de procesadores, procesos nativos etc. es exactamente el mismo.

Lo de que Java no pueda usar mas de dos procesadores aunque use green threads no lo había oido, puede ser cosa de la implementación de Debian, pero bueno, como dices tu tampoco va a usar los 4 a pleno rendimiento por que el S.O. y demás tambien tienen que vivir .

¿Has probado que realmente tu problema de rendimiento es ese? Por que, por ejemplo, si tienes 500 operaciones de vida muy corta, quizá el cambio de contexto entre procesos nativos te sea más costoso que utilizar un numero adecuado de threads en un proceso normal de la JVM y no acabes ganando mucho. Y si los procesos son muy intensivos en consumo de CPU y pones los 4 nucleos al 100%, puedes dejar a la maquina "seca" y hacerla ir mas lento que si le dejas alguna CPU libre para hacer el resto de trabajo.

Así a bote pronto, lanzar 500 threads simultaneos no parece buena idea. Muchas veces es mejor usar un pool de X (bastante menor que el numero de tareas a realizar) y que vayan haciendo de la cola de tareas pendientes a medida que acaben, en vez de todos a la vez.

Por ejemplo, yo tengo un proceso que ha de hacer ~20.000 peticiones a una aplicacion web para guardar el resultado en fichero. En mi caso el número mágico es sólo 3 threads. Si pongo 4 o más acabo más tarde. Pero para saberlo hay que probarlo por que depende de muchas cosas, especialmente del tipo de tarea y los recursos que necesita.

S!
__________________
Para obtener respuestas, pregunta de forma inteligente o si no, pregunta lo que quieras que yo contestaré lo que me dé la gana.