Mam aplikację Rails 3.2.2, którą chcę uruchomić przy użyciu JRuby 1.6.7 (tryb 1.9.2).JRuby Wydajność
Mam app próbki uruchomiony w MRI Ruby 1.9.3 i typowy wniosek wraca w ~ 40ms: Zakończony 200 OK w 36ms (Views: 27.5ms | ActiveRecord: 8.2ms)
Pod użyciu JRuby to samo żądanie jest od 3 do 20 razy wolniejsze w zależności od strony. Dla tej samej operacji jak powyżej zajmuje to ~ 180ms: Ukończono 200 OK w ciągu 180ms (wyświetlenia: 153.0ms | ActiveRecord: 24.0ms)
Czy to normalna różnica w wydajności? Czytałem, że JRuby jest mniej więcej równy prędkości z MRI. Wyniki utrzymują się na moim Macu i serwerze Windows (gdzie niestety będzie trzeba uruchomić). Pakowanie go z Warblerem działającym pod Tomcat jest równie powolne.
Powyższe czasy pochodzą z podstawowej aplikacji szyny stworzonej do testowania JRuby. W bardziej złożonej aplikacji czasy są jeszcze bardziej oddalone. W tej aplikacji na niektórych stronach uruchamiany jest więcej kodu ruby. Wygląda na to, że im więcej strona jest zależna od rubinu, tym większa różnica wydajności obserwuję. Nie zrobiłem tuningu JRuby, ponieważ nie wiem od czego zacząć.
Moje pytania brzmią: czy to normalne? Co mogę zrobić, aby dostroić JRuby?
Uruchomienie w trybie 'produkcji', w porównaniu do trybu programowania, daje czasami 5-6-krotnie szybszą odpowiedź. Przynajmniej tak było w moim przypadku. Dzięki za zwrócenie na to uwagi. – Aleks