Jak jest z wydajnością Rubiego

Ostatnio świat obiegła wieść, że Google chce przyspieszyć Pythona pięciokrotnie (skąd wzięli to oszacowanie to nie mam pojęcia), a jako że ciągle słyszę (kiedyś nawet widziałem), że Ruby jest wolniejszy (czasem znacznie) niż Python… stąd moje takie nieśmiałe pytanie: czy ktoś coś wie na temat przyspieszania Rubiego? Tak się pytam, bo może kilka rzeczy będę klikał w Railsach… albo i nie bo jak się potencjalni klienci dowiedzą, że to wymaga o wiele mocniejszego sprzętu niż python i nie ma szans na poprawę to na pewno te pomysły upadną.

z mojego doświadczenia i tego co wyniuchałem w sieci wynika, że Ruby 1.9.1 jest szybszy od nowego Pythona i nie ustępuje Pythonowi 2. Prawdopodobnie MagLev doda kopa, myślę że także Rails 3 będzie nieco szybsze, gdyż zapożyczy dużo wydajnych rozwiązań z Merba. Sprawdź sobie Ruby 1.9.1, nie zawiedziesz się.

tutaj porównanie: http://izumi.plan99.net/blog/index.php/2008/01/17/ruby-vs-php-performance/

a tutaj zbiór benchmarków i porównań: http://shootout.alioth.debian.org/

Wiem, testowałem, Ruby 1.9 jest znacznie szybszy… ale czy rails z tym działa? Jak ostatnio sprawdzałem to raczej nie.
Poza tym jak to jest ze zużyciem pamięci? Po uruchomieniu aplikacji Railsy zabierają kilka razy więcej niż takie Django. Jak to jest przy bardziej skomplikowanych aplikacjach, czy to większe zużycie pamięci przekłada się na obsłużenie większej liczby requestów? Czy np. przeliczając wydajność na zajętość pamięci, wyszłoby, że Railsy i Django (czy cokolwiek podobnego) są tak samo zasobożerne, czy dalej jest tak, że dla takiej samej wydajności aplikacji Ruby potrzebuje kilka razy więcej ramu niż Python? Czy poza ramem zużycie czegoś jeszcze jest większe?

rails 2.3.2 działa w pełni z ruby 1.9.1 (ja już na produkcyjnym jestem z tym tandemem), większość pluginów już też. co do zużycia pamięci to nie wiem :slight_smile: sam z chęcią wysłucham o tym zjawisku.

Z tym działaniem railsów z 1.9 to się nie rozpędzajmy – sam framework niby śmiga, Passenger też, ale przydałoby się mieć np. mongrela czy działający driver MySQL :wink:

Co do wydajności: na pewno słabsza niż Pythona. Ale nie, to zupełnie nie jest ważne. Wydajność języka (jeśli się dobrze pisze algorytmy, projektuje i konfiguruje bazę danych itp. itd.) staje się najmniejszym i najpóźniejszym problemem. Właściwie to nigdy nie staje się problemem: dokłada się dodatkowe maszyny i jazda. Prędzej problemem stanie się rozpraszanie bazy danych, ale to akurat następuje niezależnie od użytego języka :wink:

Warto przeczytać:

Ino różnica jest taka, że jak masz szybką i mało zasobożerną aplikację to cała farma może mieć np. 1 serwer bazodanowy + 4 asy. Jak masz aplikację wolniejszą i bardziej zasobożerną… to masz np. 1 serwer bazodanowy + 12 asów. W momencie gdy mówimy i serwerze dla bazy za $100-$200tys oraz asach za $10-$20 tys to jednak wydajna aplikacja robi różnicę. Oczywiście wszyscy twierdzą, że czas programisty jest droższy, ale to włóżmy między bajki, to może i jest prawda, ale do pewnego momentu. Poza tym i tak 90% sajtów jest robiona przez studentów zbierających na piwo, więc nie jest to drogo :slight_smile:
Algorytmy algorytmami ale potem dochodzi sie do momentu gdy każdy zachwyca się np. Hibernatem że jest taki wydajny, który ma w dokumentacji napisane, że jak coś wolno działa to żeby napisać zapytanie samemu to będzie szybciej i cała idea ORMa bierze w łeb bo pisze się nieprzenośnego SQLa, który korzysta z danej bazy więc czy nie lepiej od samego początku mieć coś co szybko działa?

Pytanie dodatkowe: czy są duże różnice w wydajności między rubim na systemach 32 i 64 bitowych?

Nie za bardzo wiem o co chodzi z driverem MySQL. Na tym moim tandemie mam i działa :slight_smile: - nie zauważyłem żadnych błędów

Skąd wyciągnąłeś te ceny? Kto za tyle sprzedaje pecety pod linuksa, choćby nie wiem jak wydajne?

Jasne, zakładając że ceny są 10x większe od prawdziwych. Czyli: TURBOBZDURA. Nie rób tego więcej, proszę.

Nie rozmawiamy o “sajtach”. Rozmawiamy o aplikacjach, dynamicznych serwisach WWW z silnikiem server-side. A w takim razie…

Przepraszam, ale: pieprzysz bzdury i nie masz pojęcia o czym mówisz. Wrócimy do tej rozmowy jak nabierzesz choć minimum zawodowego (może być i za piwo) doświadczenia w tworzeniu aplikacji sieciowych o dużym obciążeniu.

Aha. To inaczej. Wrócimy do tej rozmowy jak nabierzesz choć minimum zawodowego doświadczenia w pisaniu dużych aplikacji sieciowych w C.

Czy administracja forum ma jakąś politykę wobec osób umyślnie i świadomie piszących bzdury oraz siejących FUD? :smiley:

Skąd wyciągnąłeś te ceny? Kto za tyle sprzedaje pecety pod linuksa, choćby nie wiem jak wydajne?[/quote]
A pisał o zwykłych pecetach pod linuksa? Nie zawsze robi się małe rzeczy, w których awaryjność i przestoje nie mają znaczenia.
Wydanie 100-200k$ na serwer bazodanowy to żaden problem - dwie mocne maszynki (bo redundancja musi być), porządna macierz + jakieś dodatkowe półki na dyski (oczywiście też zdublowane) i masz 100k. Do tego licencja na Oracle i robi się 200k.

Jakie znasz duże aplikacje napisane w Railsach korzystające z Oracla (a więc i obciążone kosztami licencji Oracle oraz komercyjnego uniksa)? Bo ja żadnej. A bardzo intensywnie swego czasu badałem temat.

Skoro wliczamy licencję na Oracle, to proponuję jeszcze wliczyć Dodge Challenger SRT8 dla głównego admina (+40k$), no bo czemu nie?

Przeczytaj w linku, który podałem, na czym chłopaki hostują – niezawodnie – Friends For Sale, aplikację mającą 300+ mln odwiedzin miesięcznie.

A jest jeszcze kilka aplikacji w RoR, mających spore obciążenie i wciąż nie stojących na Oraklu – Twitter i Blip przychodzą mi pierwsze na myśl.

Dobra - odejmij tą licencję na Oracle - choć jak dla mnie “nie ma żadnej dużej aplikacji Rails chodzącej na Oracle” to żadnen argument, ale nie zamierzam się o to sprzeczać - zostaje koszt sprzętu.
Dobry sprzęt pod bazę danych na coś dużego i niezawodnego kosztuje. Najtańsza sensowna macierz Della w pełni obsadzona dyskami to około 15k$, i to wersja podstawowa, bez dodatkowych obudów na dyski. A Dell to nie jest sprzęt klasy hi-end, tylko co najwyżej środkowa półka.

To jest potężny argument – zakładając że cokolwiek Cię obchodzi to, co inni zrobili przed Tobą i co działa do pewnej skali :wink: Moim zdaniem dopiero po dojściu do końca cudzych śladów należy się upierać przy pójściu własną drogą.

Skąd wyciągnąłeś te ceny? Kto za tyle sprzedaje pecety pod linuksa, choćby nie wiem jak wydajne?[/quote]
A pisał o zwykłych pecetach pod linuksa? Nie zawsze robi się małe rzeczy, w których awaryjność i przestoje nie mają znaczenia.
Wydanie 100-200k$ na serwer bazodanowy to żaden problem - dwie mocne maszynki (bo redundancja musi być), porządna macierz + jakieś dodatkowe półki na dyski (oczywiście też zdublowane) i masz 100k. Do tego licencja na Oracle i robi się 200k.[/quote]
Jeden serwer za jakieś $150tys na bazę danych + dwa słabsze nieco (ale kupione dawno temu… teraz pewnie by kosztowały ok. $80 tys) na replikację. Bez oracla, całość na postgresie. Nie chodziło o awaryjność, ale o jakieś 5mln ogłoszeń dostępnych online z dzienną rotacją w granicach 200-500tys. Względną awaryjność zapewniała replikacja, zawsze można było przełączyć aplikacje na jedną z replikowanych baz (co też czasami trzeba było robić). Do tego oczywiście na farmie dochodzi kilkanaście innych serwerów, oczywiście nie pctów.

Skąd wyciągnąłeś te ceny? Kto za tyle sprzedaje pecety pod linuksa, choćby nie wiem jak wydajne?[/quote]
Sam pisałeś o highscallability.com… czy myślisz, żę oni tam trzymają to na zwykłych pctach pod linuksem? Mówię np. o markowym serwerze dla bazy danych, 32GB ramu + 8 procesorów + jakaś ładna macierz z porządnymi dyskami (co w sumie daje np. 400GB), owszem, na tym chodził Linux… ale nie Oracle jak potem pisałeś, ale Postgres.

[quote=Tomash]Przepraszam, ale: pieprzysz bzdury i nie masz pojęcia o czym mówisz. Wrócimy do tej rozmowy jak nabierzesz choć minimum zawodowego (może być i za piwo) doświadczenia w tworzeniu aplikacji sieciowych o dużym obciążeniu.
Aha. To inaczej. Wrócimy do tej rozmowy jak nabierzesz choć minimum zawodowego doświadczenia w pisaniu dużych aplikacji sieciowych w C.
Czy administracja forum ma jakąś politykę wobec osób umyślnie i świadomie piszących bzdury oraz siejących FUD? :D[/quote]
Bzdury, czyli jak ktoś się z Tobą nie zgadza? Ale skoro tak, to chrzanić to forum skoro ma być moderacja bo tak chce wielki znawca, którego doświadczenie zamyka się na stawianiu sajtów na pctach. Skoro tak, to idę sobie stąd, przykro mi, że się tak pomyliłem, widać że tutaj raczej jest kółko wzajemnej adoracji i nie można mieć swojego zdania.
btw… nawet mnie nie znasz a wyciągasz wnioski na temat tego jakie mam doświadczenie… cóż nie zajmowałem się rozwijaniem drobnych sajtów ale stron na serwerach, o których pisałem, część z nich się nie wyrabiała, zwłaszcza ten z bazą danych, bo mieliśmy tam… a zresztą, nie będę się licytować bo nie ma po co. Dalej sobie róbcie swoje aplikacje na pctach pod linuksem.

I mała uwaga w ramach mojego ostatniego wpisu w tym śmiesznym towarzystwie: skoro czas programisty jest o wiele droższy niż sprzęt (chociaż twierdzę inaczej i dzięki temu to co piszę jednak jest wydajne i nie trzeba co chwilę dokupować sprzętu tylko dlatego, że coś napisałem) to po jaką cholerę google przyspiesza pythona, ludzie się podniecają, że ruby 1.9 jest szybszy… po co skoro to nie ma żadnego znaczenia, w końcu najwyżej kupicie sobie większego pcta.

W ramach moderacji proszę moderatora/admina/kogokolwiek o skasowanie mojego konta, jakoś mi niepotrzebne skoro nie wolno się nie zgadzać z takimi samozwańczymi gwiazdami rubiego.

żegnam

Na rubym (Merb) działa yellowpages.com

@szymong: twoje doświadczenia wydają się interesujące, więc nie zważając na Tomash’a, możesz je nam przybliżyć. On po prostu lubi być a’la Zed Shaw, ale pozatym ma bardzo duże pojęcie o rubym.

Szymong, dlaczego przywołujesz swoje doświadczenie w kontekście twierdzenia że “i tak większość sajtów robią studenci za piwo”?

Łatwo strzelić focha, trudniej udzielić merytorycznej odpowiedzi. Grzecznie się zatem zamykam i słucham jakie to wielkoskalowe aplikacje stworzyłeś, które do śmigania wymagają Oracla i serwerów za 10k$. Z przyjemnością odwiedzę te aplikacje i zobaczę statystyki ich odwiedzin – śmiało.
Jak nie dostaniemy tu linków, bezpiecznie będzie uznać że zajmowałeś się trollowaniem i rozniecaniem flejma. Kaman, pokaż że należy Cię poważnie traktować.

PS. Ja nie wycinam Twoich wypowiedzi z kontekstu do sklejania z nich dowolnych kolaży, więc bądź uprzejmy też tego nie robić.

@szymong: Taka już jest niestety często natura dyskusji na forach internetowych (często programistycznych), że ludzie obrzucają się bluzgami i są bardzo bojowo nastawieni często nie mając pojęcia o czym piszą. To forum nie jest wyjątkiem, też ma swoje “gwiazdy”, niejednokrotnie można wywołać niezły flejm pytając po prostu dlaczego Ruby jest wolniejszy od Pythona :slight_smile:

Z drugiej strony pytanie o tak rozległy temat jak “szybkość” języka i oczekiwanie odpowiedzi na forum nie ma zbytnio sensu - jeśli masz doświadczenie to bez większego problemu będziesz w stanie porównać wydajność obu języków czy frameworków czy czegokolwiek innego na czym Ci szczególnie zależy. Nie oczekuj po prostu odpowiedzi: “Tak Ruby jest wolniejszy, wybierz Pythona” bo to nie prawda. Zależy jaki Ruby (poza 1.9 jest jeszcze JRuby i Rubinius na horyzoncie), jaki Python, co konkretnie porównujesz etc. Poza tym w web aplikacjach często liczy się nie szybkość samego języka tylko IO, konkretny serwer, obciążenie jakie wywołuje - to są tematy których rozwinięcie zajęłoby kilka tomów i jak z całą resztą nietrywialnych zagadnień ujęcie odpowiedzi w kilku zdaniach jest niemożliwe.

@Tomash: FUD wokół szybkości Rubiego jest spory nie od dzisiaj, rzucanie haseł w stylu “pieprzysz głupoty” w tym nie pomaga :wink: A serwery za $200k istnieją (takie wypasione pecety z duża pamięcią, dyskiem i bazą danych np. MySQL :wink: - wiem bo widziałem rachunek w poprzedniej firmie jak zrobili upgrade serwera bazy :wink: )

Tomash, on nic nie pisał o Oracle. Pozatym to twój post: http://rubyonrails.pl/forum/p9387-Dzisiaj-08%3A31%3A17#p9387 mógł sie wydać napastliwy. Na tym forum jest tendencja, by było normalne, nie jest to kolejny troll, który twierdzi, że w 2 dni się nauczy rubiego :confused: Zadaje normalne pytania, a Ty go od razu mieszasz z błotem :frowning:

A, co mi tam, odpowiem sobie.

Czyli jednak na linuksie i nie na oraklu. Zatem odpadają koszty licencji (komercyjny *nix+Oracle). Więc? :wink:

Nie, bzdury czyli jak ktoś rzuca tekstami bez pokrycia i podania przykładów. Prosiłem o przykład dużej (o dużym obciążeniu) aplikacji internetowej korzystającej z Oracla chodzącego na serwerach za 100k$. Otóż robiłem kiedyś mały risercz a’propos stosu technologicznego największych graczy w tym geszefcie (Facebook za granicą, Nasza-Klasa w Polsce itd.) – żaden z nich nie używam Oracle, znacząca większość używa MySQL. Sporo używa języka PHP, który jeszcze bardziej obsysa wydajnościowo niż Ruby. Ja mam dane, którymi mogę podeprzeć swoje stanowisko (właśnie je przedstawiam). A Ty?

I bardzo nie lubię tekstu o studentach robiących za piwo, bo można nim dowolną dyskusję sprowadzić do absurdu.

Tu mnie masz, aplikacji webowej jeszcze nie deployowałem na czymś innym niż pecet z linuksem. Co prawda kiedyś współstawiałem spory system ERP z Oracle na HPUX, ale to się pewnie nie liczy.

Zatem, Szymong – ponawiam prośbę o duże i popularne sajty, które postawiłeś i korzystają z Oracle.
EDIT: które postawiłeś, kropka. Oracle nie jest koniecznością.

Bardziej kółko bezlitosnego miażdżenia trolli i flejmerów. Nie, nie można mieć zdania, które stoi w jawnej sprzeczności z empirycznymi danymi, chyba że przedstawi się własne empiryczne i weryfikowalne dane, które wspierają takie śmiałe teorie.

Muszę znać Cię z imienia i nazwiska (może jeszcze imię psa i numer karty kredytowej) żeby stwierdzić, że przedstawione w tym temacie Twoje opinie są niepodparte dowodami?

Licytuj się. Proszę. Ponawiam (yet again) prośbę o te przykłady sajtów, które zrobiłeś.

Być może Twój czas jest tańszy niż sprzęt :stuck_out_tongue:

EDIT:
A tak poważnie: w czym i co piszesz? Znowu fajnie by było dostać przykład.
(ja nie twierdzę, że napisałem choć jedną aplikację o naprawdę gigantycznym obciążeniu – ty Tak, więc dowód proszę)

Podniecamy się, bo skoro nie trzeba kupować większego pcta, to zawsze jest tę parę stów w kieszeni “za darmo”. Nie jarałoby Cię znalezienie ośmiuset PLN na ulicy? Bo mnie owszem.

Huh, jasne – żeby nikt już nie mógł przeczytać Twoich opinii?

Przepraszam, zlały mi się posty użytkowników Underley i Szymong. Wybacz, Szymong, że wsadziłem Ci w gębę twierdzenie o Oracle. To trochę inwaliduje część moich ostatnich postów – mam nadzieję że ustosunkujesz się do pozostałej części.

Słusznie się wydał, był napastliwy. Nie lubię przerucania się tekstami bez pokrycia. Kojarzą mi się z forum Bravo albo innej Dziewczyny. Jako inżynierowie mamy nie tylko prawo, ale i obowiązek żądać twardych, weryfikowalnych dowodów – stąd moje zacięcie na osoby, do których to nie dociera.