2010-02-05 4 views
8

J'ai le choix de développer une application qui dépendra fortement du threading (jusqu'à 200). Je sais que je peux utiliser d'autres interprètes Ruby pour le filetage comme JRuby. Mais il y a 2 choses:Dois-je utiliser des fils rubis ou simplement ne pas utiliser de rubis pour enfiler?

1) Jruby ne supporte pas encore la version 1.9, donc c'est un non. Y a-t-il un autre interpréteur de threads non-green qui supporte au moins 1.9 car c'est une condition préalable pour moi si j'utilise Ruby.

2) Même en utilisant un interpréteur comme Jruby, est-ce que j'aurais vraiment une performance de threads décente que je peux obtenir en Java? Peut-être que je devrais simplement utiliser Java pour cette application.

Note: il ne s'agit pas d'une tentative de discussion subjective. C'est pour le conseil concernant la performance de fil seulement. En outre, ce n'est pas Java vs Ruby ou quoi que ce soit de cette nature. Je suis plus jeune à Ruby et espère éclaircir cela pour mon propre bénéfice, merci.

+0

Je pensais que les threads JRuby mappés directement aux threads JVM. Si c'est vrai, même si votre JRuby n'est pas "1.9", il devrait utiliser des threads natifs (si votre JVM utilise des threads natifs). Oh, et pouvez-vous nous donner une idée de ce que fait votre application? Parfois, il existe des alternatives aux threads auxquels vous n'avez peut-être pas pensé. –

+0

E/S réseau/Http. Similaire à JMeter. Chaque thread est créé pour cette raison. La performance est assez importante. Et donc j'aime programmer en Ruby, si je peux je voudrais le faire pour ce projet. – Zombies

+0

Question secondaire: 200 discussions? Vous avez donc une machine à 200 cœurs? Cool. –

Répondre

6

Vous devriez vraiment le comparer.

Vos threads vont-ils faire beaucoup de calculs simultanés? Ensuite, vous aurez probablement besoin de threads natifs. Mais si vous attendez des OI tout le temps, alors les fils verts de Ruby sont peut-être bien.

Même avec ce conseil, vous devriez préparer un petit programme de test et voir si le moyen le plus simple (en utilisant simplement Ruby 1.9) fonctionnera.

+0

Si je peux avoir un peu de temps, je vais essayer de poster les résultats. – Zombies