Szybsze uruchamianie JRuby

Opublikowane przez Jarosław Zabiełło Wed, 15 Oct 2008 01:14:00 GMT

Osoby często uruchamiające w konsoli JRuby’ego pewnie się trochę denerwują opoźnieniami związanymi z koniecznością załadowania za każdym razem JVM (wirtualnej maszyny Javy). Dzięki serwerowi Nailgun, JVM jest trzymana w pamięci i JRuby jest uruchamiany natychmiast, bez opóźnień. Instalacja jest prosta i opisana na Wiki.

Kompilację Nailguna dla JRuby najwygodniej zrobić za pomocą ant'a:

ant jruby-nailgun

Następnie należy uruchomić serwer

jruby --ng-server

(Serwer domyślnie nasłuchuje na wszystkich interfejsach i na porcie 2113, i jest odpalany na prawach usera który, wykonał tą komendę.)

Od tego momentu wirtualna maszyna Javy ładowana jest do pamięci i aby JRuby z tego korzystał należy uruchamiać go z opcją --ng. Rozwiązanie nadaje się świetnie do częstego uruchamiania skryptów. Znika zupełnie efekt opóźnienia związany z koniecznością ładowania JVM przy każdym uruchomieniu skryptu JRuby.

Małe porównanie:

$ time jruby --ng -e "puts 1"
1
real    0m0.049s
user    0m0.010s
sys     0m0.000s

$ time jruby  -e "puts 1"
1
real    0m0.549s
user    0m0.530s
sys     0m0.060s

Tagi , ,  | 8 comments

Comments

  1. Avatar JO powiedział 8 days later:

    Ale tak nprade co to zmienia ?

    Może tak jeśli trzeba odpalic kolejno w konsoli setke skryptów ale jeśli mamy aplikacje która sobie gdzies smiga… to czy będzie wstawać 5 sekund czy 1 to różnicy wielkiej niema … przynajmniej ja nie widze tutaj zastosowania ani potrzeby :) Ale zaraz mnie ktoś w tym temacie oświeci

  2. Avatar jell powiedział 8 days later:

    docenisz, jesli bedziesz mial skrypt szelowy, tudziez inny wynalazek – uruchamiajacy 1000x jakis skrypt rubiego. np. do przerabiania 1000ca plikow textowych z jednego formatu, do innego.

  3. Avatar Krzysiek powiedział 13 days later:

    Ktoś miał może przyjemność zetknąć się z sproutcore? http://www.sproutcore.com/

    Jestem bardzo ciekaw opinii – czy wnosi on coś nowego, czy też kolejna nadbudówka do merb’a.

  4. Avatar Jiima powiedział 13 days later:

    Z tego co ja czytałem na temat sprouta, nie ma on domyślnie wiele wspólnego z merbem, to czyste rozwiązanie JS. Ruby jest w nim używane wyłącznie do zadań administracyjnych, a przynajmniej tak twierdzą twórcy. Lubię JS, ale nie na tyle by stawiać go po stronie serwera, przynajmniej do momentu gdy zostaną w nim wprowadzone jakieś oficjalne mechanizmy pakietów / przestrzeni nazw i importów (js 2.0). Klasy też byłyby miłe, choć nie niezbędne. W związku z tym póki co rozwiązania takie jak Sprout, Phobos, Jaxer czy różne “Javascript On Rails” nie budzą u mnie jakiegoś wyjątkowego entuzjazmu.

  5. Avatar Jiima powiedział 13 days later:

    Co do nailgun’a, rzeczywiście bardziej przydaje się do odpalania skryptów (rake, thor) niż merba czy railsów jako takich. Ponadto, “consumer JRE” wprowadzony niedawno przez Sun posiada podobne mechanizmy na poziomie VM (ale to wyłącznie opcja dla miłośników Linuxa i Solarisa, ew. starych windows, gdyż Vista nie obsługuje tego mechanizmu gdyż sama ma coś podobnego co się gryzie, a OSX póki co nie został obdarowany u10 Javy).

  6. Avatar dominus powiedział about 1 month later:

    @JZ: Zastanawiałbym się na Twoim miejscu czy wogóle nie kasować tych debilnych irytujących wpisów …

  7. Avatar Jarosław Zabiełło powiedział about 1 month later:

    @dominus: masz rację

  8. Avatar Jarosław Zabiełło powiedział 10 months later:

    Link do opisu użycia JRuby z Nailgunem gdzieś wyparował (nie ma go też na nowym serwerze) więc, po sprawdzeniu, napisałem od krótko od podstaw jak tego używać.

(leave url/email »)

   Pomoc języka formatowania Obejrzyj komentarz