2010-02-05 14 views
8

Tengo la opción de desarrollar una aplicación que dependerá en gran medida del enhebrado (hasta 200). Sé que puedo usar otros intérpretes de Ruby para enhebrar como JRuby. Pero hay 2 cosas:¿Debo usar hilos de rubí o simplemente no usar el rubí para enhebrar?

1) Jruby aún no es compatible con 1.9, por lo que es un no. ¿Hay algún otro intérprete de subprocesos que no sea verde que sea compatible con al menos 1.9 ya que es un requisito previo para mí si utilizo Ruby.

2) Incluso con un intérprete como Jruby, ¿realmente obtendría un rendimiento de subprocesos decente que puedo obtener en Java? Tal vez debería usar Java para esta aplicación.

Nota: esto no es un intento de discusión subjetiva. Es solo para el asesoramiento sobre el rendimiento del hilo. Además, esto no es Java vs Ruby ni nada por el estilo. Soy más nuevo para Ruby y espero aclarar esto para mi propio beneficio, gracias.

+0

Pensé que los subprocesos JRuby se asignaban directamente a los hilos JVM. Si eso es cierto, aunque su JRuby no sea "1.9", debería usar subprocesos nativos (si su JVM usa subprocesos nativos). Ah, y ¿puedes darnos una idea de lo que está haciendo tu aplicación? A veces hay alternativas a los hilos que quizás no hayas pensado. –

+0

E/S de red/Http. Similar a JMeter. Cada hilo se crea por esa razón. El rendimiento es bastante importante. Y entonces me gusta programar en Ruby, si puedo me gustaría hacerlo para este proyecto. – Zombies

+0

Problema secundario: ¿200 hilos? ¿Entonces tienes una máquina de 200 núcleos? Guay. –

Respuesta

6

Realmente debería compararlo.

¿Sus hilos van a estar haciendo una gran cantidad de cálculos simultáneos? Entonces probablemente necesites hilos nativos. Pero si vas a estar esperando IO todo el tiempo, entonces quizás los hilos verdes de Ruby estén bien.

Incluso con este consejo, debe cocinar un pequeño programa de prueba y ver si la forma directa (simplemente usando Ruby 1.9) funcionará.

+0

Si puedo obtener algo de tiempo para tratar de publicar los resultados. – Zombies