2010-05-07 16 views
15

Jestem całkiem nowy w całym świecie JRuby. Używam RSpec w dość dużym pakiecie testowym. Chciałbym móc często uruchamiać specyfikacje, ale JVM zajmuje tak dużo czasu na uruchomienie, że staje się drenażem w czasie rzeczywistym.Szybszy RSpec z JRuby

Czy istnieje sposób na utrzymanie maszyny JVM? lub sposób, aby uzyskać szybsze działanie specyfikacji z JRuby?

Odpowiedz

20

Są dwie rzeczy, można spojrzeć na:

  1. uruchomić serwer pistolet na gwoździe i wysłać Spec biegnie do niego. jruby --ng-server &, a następnie jruby --ng -S spec lub jruby --ng -S rake

  2. Użyj spork. http://www.ruby-forum.com/topic/190163 Słyszałem, że Roger Pack ma wersję, która może współpracować z JRuby. http://github.com/rdp/spork

+0

Jeśli używam serwera do paznokci dla moich specyfikacji, to trwa to około 23 sekundy, a po prostu uruchamianie ich ze specyfikacją rake trwa ~ 8 sekund. Muszę robić coś złego. Również nie byłem w stanie sprawić, żeby szpikował do pracy. Wydano komunikat o błędzie, że fork nie jest obsługiwany na mojej platformie. Jednak nie próbowałem wersji Roger Pack. – jacklin

+1

Wypróbuj te same zadania kilka razy. Mój początkowy czas ładowania wynosił 30 s, aby uruchomić "jruby --ng -S gem list", ale zbliżył się <1 s po 10 uruchomieniach. Kompilator JIT wraz z buforami/buforami systemu operacyjnego powinien zacząć przyspieszać (szczególnie te w/o ssd). Upewnij się również, że używasz maszyny wirtualnej --server wraz z innymi standardowymi flagami GC. Obserwuj użycie pamięci, procesor i i/o, aby określić wąskie gardło (jeśli występuje). HTH. – Barry

+0

Uzgodnione, spork i nailgun razem w moim projekcie przyniosły mój jednorazowy test z 30 do 5 sekund. Mam poręczny skrypt pomocniczy do uruchamiania rspec z sporkami i gwoździami, tylko gdy są uruchomione, na wypadek gdybyś był zainteresowany: http://ylan.segal-family.com/blog/2012/10/02/faster-rspec- jruby/ –