Przyśpieszenie testów na dużej aplikacji

Hej

Właśnie mi wpadła w ręcę dość duża aplikacja. Powiedzmy tak z 15k linii kodu (poprzez rake stats).

Dotychczas pracowałem na małych aplikacjach bądź średniej wielkości.

Zaraz pewnie usłyszę - 'The secret to building large apps is NEVER build large apps".
No OK, spoko, będę starał się to jakoś ogarnać, powrzucam czas na refaktor między featureami. itd

Pytanie brzmi:

Jak przyśpieszyć ładowanie się spec helpera albo po prostu czas ładowania się samych railsów?
Ogólnie jak przyśpieszyć testowanie.
Obecnie załadowanie spec helpera zajmuje koło 1 minuty.

Walcie linki itd, przejrzę to w wolnej chwilii

PS RoR 3.1.X oraz Ruby 1.9.3.

falcon patch do Ruby i Zeus.

To takie rozwiązanie ad-hoc, bo czeka Cię mnóstwo pracy jeśli chcesz ją “ulżejszyć”.

Z ciekawości, ten falcon patch instalowany via rvm-patchsets? https://github.com/skaes/rvm-patchsets

Właśnie zainstalowałem i widzę żę appka jak startowała 22 sekundy, tak i 22 sekundy startuje więc jeszcze zależy chyba jaka to aplikacja :confused:

[quote=hubertlepicki]Z ciekawości, ten falcon patch instalowany via rvm-patchsets? https://github.com/skaes/rvm-patchsets

Właśnie zainstalowałem i widzę żę appka jak startowała 22 sekundy, tak i 22 sekundy startuje więc jeszcze zależy chyba jaka to aplikacja :/[/quote]
Tak, “U mnie działa”. :wink: A jaki Ruby? Bo pytanie, czy danego patcha jest też falcon.

Źle to robiłem jednak. Teraz widzę spore przyspieszenie, 1.9.3 z patchami railsexpress: 22s -> 9s. Mega.

Ale co mam zainstalować całą paczkę?

Czy też tylko powybierać patch falcon?

A i dziękuje za odp. :slight_smile:

Edycja:
A takie czary?
http://progfu.com/post/32050264470/make-your-rails-development-faster-with-ruby-perf-and

Bawił się ktoś w coś takiego?

I czy Falcon ma coś współnego z tym?? :slight_smile:

Hitsu: ja instalowalem tego rubego -perf, faktycznie troche przyspieszył , o jakies 15% - jeżeli chodzi o działanie testów.

btw. jak sprawdzić ile czasu ładuje mi się sam spec_helper?

@sarin
napisz pusty test np

[code]require ‘spec_helper’

describe "Nothing’ do
end[/code]
I go uruchom

Najbanalniejsze rozwiązania jak zwykle najlepsze ;] Dzięki!

Ok panowie jestem pod wrażeniem. :slight_smile:

Na początku (na ‘czysto’):

rspec spec/empty_spec.rb  64,65s user 2,16s system 98% cpu 1:07,55 total

Ruby + https://github.com/skaes/rvm-patchsets

rspec spec/empty_spec.rb  17,34s user 2,58s system 99% cpu 20,047 total

Ruby + RVM patches + GC Tuning

rspec spec/empty_spec.rb  10,50s user 2,58s system 99% cpu 13,136 total

GC Tuning:

export RUBY_GC_MALLOC_LIMIT=1000000000 export RUBY_FREE_MIN=500000 export RUBY_HEAP_MIN_SLOTS=40000
// Uwaga po tym appka u mnie zajmuje 33% więcej RAMu. You millage may vary.

Czyli 6 razy szybciej. :slight_smile:

Edycja:
A z Zeusem

zeus test spec/empty_spec.rb  0,57s user 0,02s system 58% cpu 1,010 total

Masakra! :smiley:

To może jeszcze przetestuj https://github.com/sevos/zeus-parallel_tests? btw z tego co widzę, gem autorstwa naszego forumowego kolegi :wink:

Huh Hitsu: ładnie ;D Dzięki za info , że warto się nad tym pochylić . ;]