Performance - RoR vs J2EE

CzeœÌ,

Wszystkim zainteresowanym wydajnoœci¹ RoR polecam artyku³: http://www.relevancellc.com/blogs/?p=31 Autor opisuje swoje doœwiadczenia w przepisywaniu aplikacji napisanej w Java/JSTL/Spring/Hibernate/MySQL/ACEGI na RoR. Oczywiœcie poruszone s¹ tam tak¿e inne aspekty portowania ni¿ wydajnoœÌ wiêc osoby nie zainteresowane wydajnoœÌ¹ tak¿e znajd¹ tam coœ dla siebie.

Tomek

To moj pierwszy post… Mam nadzieje Âże bĂŞdzie wiĂŞcej… :slight_smile:

To kolejne z porownan jakie czytalem, ktore burzy mit przewagi wydajnosci rozwiazan J2EE nad Rails.
Oczywiscie wszystko zalezy od zastosowan i “sytuacji” ale dobrze, ze pojawia sie pewna swiadomosc.

My (pozwole sobie przywlaszczyc prawo do wypowiedzenia sie w imieniu innych) rowniez mamy nadzieje, ze postow bedzie wiecej:)

a byÂł w ogĂłle taki mit? :slight_smile:

UÂżywam ROR gdy tylko mogĂŞ. Nie mogĂŞ pisaĂŚ wszĂŞdzie bo jest zbyt WOLNY.
Sam Ruby jest duÂżo wolniejszy od Javy, jest wolniejszy nawet od Pythona.
Tworzenie aplikacji jest piĂŞkne, szybsze i proste ale twierdzenie, Âże ROR to demon szybkoÂści jest bzdurÂą.
OczywiÂście w 95% przypadkĂłw ROR da radĂŞ temu co J2EE ale tylko dlatego, Âże j2EE w tylu procentach jest stosowane na wyrost …

a w jakich zastosowaniach siĂŞ nie sprawdza?

I tu sie zgodze z iddgd.
Wyobrazmy sobie system (oczywiscie za grube $$$$), nad kt. docelowo ma pracowac 10 projektantow/50 programistow/20 testerow przez pol roku (w roznych fazach projektu ten stosunek bedzie inny). Dodatkowo 2 konsultantow merytorycznych i 3 technicznych oraz 5 pracownikow oddelegowanych z firmy zamawiajacej (integracja z istniejacym juz systemem). Przytlaczjace? Czekajcie… Aplikacja nie tylko przedstawia/wyszukuje dane (splywajace z 120 rozsianych po calym swiecie oddzialow firmy) ale tez je przetwarza (sztuczna inteligencja, hipotezy, uczenie, prognozowanie itd. czyli algorytmy i jeszcze raz algorytmy) nastepnie generuje wyniki w zrozumialej dla czlowieka formie. Dodatkowo dane sa uaktualniane co pewien interwal i system musi reagowac na te zmiany uwzgledniajac je w przebiegajacych obliczeniach. Dostep do danych/zestawien/raportow/prognoz jest poprzez aplikacje webowe, mobilne oraz programy okienkowe. System ma zostac w najblizszych latach rozszerzony o nowe funkcjonalnosci. I mozna jeszcze wymyslac …

Okazuje sie, ze Java moze byc najsensowniejszym rozwiazaniem:

  • Java przy obliczeniach numerycznych niewiele ustepuje C/C++ (w Ruby na pewno trzeba by uciec do C bo jest niestety wybitnie wolny)
  • Nowe cechy java 5 (annotations, generics, autoboxing, itd.) pozwalaja pozwalaja produkowac zwiezly kod i pozbyc sie wiekszosci xmlowego narzutu
  • Mozliwosc programowania aspektowego (np. AspectJ) co moze znaczaco uproscic model domeny.
  • Masa doskonalych bibliotek i frameworkow (wiekszosc darmowa: lgp, bsd lub podobne)
  • Duza liczba specjalistow “best-practises” na rynku.
  • Doskonaly support ze strony narzedzi do projektowania Together, Rational i inne.
  • Frameworki MDA (Model Driven Architecture) np. AndroMDA
  • Doskonale IDE (IntelliJ, eclipse, JDeveloper)
  • Statyczne typowanie jest w takiej sytuacji blogoslawienstwem (code assist, refactoring)
  • Mozna jeszcze wymyslac …

Natomiast dla aplikacji webowej z wzglednia malo skomplikowana domena, pieknym interaktywnym interfejsem i wykonanej w rozsadnym czasie - RoR :slight_smile:

Nie potrzeba konia do ciagniecia sanek, ale husky czasami nie wystarczy!

nie no jasne, tu chyba w ogĂłle RoR nie celuje. ani w tak duÂże projekty, ani w takie, w ktĂłrych “docelowo ma pracowac 10 projektantow/50 programistow/20 testerow przez pol roku” (to pó³ roku, to chyba mocno przesadzone, pó³ roku to zajmie uzgodnienie formatu przesyÂłanej dokumentacji, zasad spotkaĂą komitetĂłw sterujÂących itp ;)).

ale chciaÂłem zauwaÂżyĂŚ, Âże to nie jest na temat, bo Âżadna w/w przyczyn nie dotyczy wydajnoÂści. poza obliczeniami.

a chĂŞtnie bym siĂŞ dowiedziaÂł od bardziej doÂświadczonych kolegĂłw gdzie siĂŞ ror nie sprawdzi.

ps. a jakby skompilowaĂŚ rails? :slight_smile:

Tak sobie tylko fantazjowalem :slight_smile:

Co do kompilowania to istnieja rozwiazania (nie jest to kompilacja) typu rb2exe czyli spakowanie skryptu i wymaganych bibliotek do exe. Sam kiedys uzylem py2exe ale mialo to na celu jedynie pozbycie sie koniecznosci instalacji pythona na windows w celu uruchomienia aplikacji.
Odn. pythona to jest cos takiego jak psyco (“You might get 10x to 100x speed-ups”)
Odn. javy to gcj (pod Ubuntu mozna zainstalowac skompilowana w ten sposob eclipse)

Problemem jest, ze Ruby nie ma vm-a (jak java, czy python). Prace sa w toku http://www.atdot.net/yarv, ale spodziewac sie go mozna pewnie dopiero w w wersji 2. Byc moze wtedy bedzie rownie wydajny jak Perl czy Python.

Dodatkowo przez kompilacje do kodu natywnego zyskujac niewiele poswieca sie najwieksze atuty jezykow skryptowych.

chodzi³o mi o skompilowanie rails, nie skryptów. jak przecie¿ wiemy, aplikacja w ROR to bardzo niewiele kodu, co oczywiœcie jest z³udne, bo przecie¿ rails tam sobie pod spodem dzia³a. i tak siê zastanawiam, co by da³a kompilacja samego rails. ale byÌ mo¿e to nie jest mo¿liwe, jeœli jest tam duzo ró¿nych eval i dynamicznego tworzenia metod etc.

Już pojawiły się pierwsze benchmarki YARV - maszyny wirtualnej Ruby, która ma być oficjalną częścią Ruby2 i wyniki są obiecujące. Może to pomoże Railsom zyskać zaufanie rynku…