2010-02-05 9 views
8

Mam wybór do opracowania aplikacji, która będzie polegać głównie na wątkach (do 200). Wiem, że mogę używać innych interpreterów Ruby do gwintowania takich jak JRuby. Ale są 2 rzeczy:Czy powinienem używać nici rubinowych lub po prostu nie używać rubinu do gwintowania?

1) Jruby nie obsługuje jeszcze 1.9, więc to nie jest. Czy istnieje inny nie-zielony interpreter wątków, który obsługuje co najmniej 1.9, ponieważ jest to warunkiem wstępnym dla mnie, jeśli używam Ruby.

2) Nawet przy pomocy tłumacza takiego jak Jruby, czy naprawdę dostanę przyzwoitą wydajność gwintu, którą mogę uzyskać w Javie? Być może powinienem użyć Java dla tej aplikacji.

Uwaga: nie jest to próba subiektywnej dyskusji. Jest to poradnik dotyczący wyłącznie wydajności gwintu. Nie jest to też Java kontra Ruby ani nic takiego. Jestem nowicjuszem w Ruby i mam nadzieję, że wyjaśnię to dla mojej własnej korzyści, dzięki.

+0

Myślałem, że wątki JRuby są mapowane bezpośrednio na wątki JVM. Jeśli to prawda, nawet jeśli JRuby nie ma wartości "1.9", powinno używać natywnych wątków (jeśli twoja maszyna JVM używa natywnych wątków). Aha, czy możesz dać nam pojęcie o tym, co robi twoja aplikacja? Czasami istnieją alternatywy dla wątków, o których być może nie pomyślałeś. –

+0

Sieć I/O/Http. Podobny do JMeter. Każdy wątek jest tworzony z tego powodu. Wydajność jest dość ważna. A więc lubię programować w Ruby, czy mogę to zrobić dla tego projektu. – Zombies

+0

Problem z boku: 200 wątków? Więc masz 200 podstawowych maszyn? Chłodny. –

Odpowiedz

6

Powinieneś naprawdę to sprawdzić.

Czy Twoje wątki wykonują wiele jednoczesnych obliczeń? Wtedy prawdopodobnie będziesz potrzebował natywnych wątków. Ale jeśli masz zamiar czekać na IO przez cały czas, to może zielone nitki Ruby są w porządku.

Nawet z tą radą powinieneś przygotować mały program testowy i sprawdzić, czy działa prosty sposób (tylko przy użyciu Ruby 1.9).

+0

Jeśli uda mi się zdobyć trochę czasu, postaram się odesłać wyniki. – Zombies

Powiązane problemy