🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: pl.comp.lang.ruby
16 messages
16 total messages Started by moldovenu Fri, 19 Oct 2007 08:20
Ruby poza railsami
#682
Author: moldovenu
Date: Fri, 19 Oct 2007 08:20
12 lines
1230 bytes
Czy są tu osoby używające Ruby np. do przetwarzania dużej ilości danych? 
Mające większe projekty w tym języku - albo chociaż inne niż webowe?
W czym robiliście je wcześniej, dlaczego właśnie Ruby?

Jestem na etapie wyboru ru/py do pewnego projektu - pomijając wszystkie 
kwestie semantyki i możliwości języka, w wielu miejscach Ruby jest 
zwyczajnie dużo szybszy niż Python, nawet tam gdzie spodziewałem się iż 
Ruby polegnie.

Są tu jacyś nie-railsowcy? ;)

adam
Re: Ruby poza railsami
#683
Author: Paweł Kondzior
Date: Fri, 19 Oct 2007 09:15
16 lines
1551 bytes
Ja uzywam ruby do tworzenia okresowych backupow danych i wysylania ich 
na server.

Dnia 07-10-19 10:20, moldovenu napisał(a):
> Czy są tu osoby używające Ruby np. do przetwarzania dużej ilości danych? 
> Mające większe projekty w tym języku - albo chociaż inne niż webowe?
> W czym robiliście je wcześniej, dlaczego właśnie Ruby?
> 
> Jestem na etapie wyboru ru/py do pewnego projektu - pomijając wszystkie 
> kwestie semantyki i możliwości języka, w wielu miejscach Ruby jest 
> zwyczajnie dużo szybszy niż Python, nawet tam gdzie spodziewałem się iż 
> Ruby polegnie.
> 
> Są tu jacyś nie-railsowcy? ;)
> 
> adam
Re: Ruby poza railsami
#684
Author: ciukes
Date: Fri, 19 Oct 2007 11:58
10 lines
1070 bytes
> ... w wielu miejscach Ruby jest 
> zwyczajnie dużo szybszy niż Python, nawet tam gdzie spodziewałem się iż 
> Ruby polegnie.

Powiedz wiecej o tym, przedstaw pomiary, problemy, zadania. Chetnie o 
tym poczytam.

Pozdrawiam,
ciukes.
Re: Ruby poza railsami
#687
Author: Maciej Piechotka
Date: Fri, 19 Oct 2007 12:37
14 lines
1495 bytes
On Fri, 19 Oct 2007 10:20:35 +0200, moldovenu wrote:

> Jestem na etapie wyboru ru/py do pewnego projektu - pomijając wszystkie
> kwestie semantyki i możliwości języka, w wielu miejscach Ruby jest
> zwyczajnie dużo szybszy niż Python, nawet tam gdzie spodziewałem się iż
> Ruby polegnie.

Hmm. Słyszałem twierdzenia temu przeciwne, ale żadnych testów nie robiłem.

Pozdrawiam
-- 
I've probably left my head... somewhere. Please wait untill I find it.
Homepage (pl_PL): http://uzytkownik.jogger.pl/
(GNU/)Linux User: #425935 (see http://counter.li.org/)
Re: Ruby poza railsami
#685
Author: moldovenu
Date: Fri, 19 Oct 2007 13:32
13 lines
1318 bytes
> Powiedz wiecej o tym, przedstaw pomiary, problemy, zadania. Chetnie o 
> tym poczytam.

Moje testy to np. lista obiektów-danych. Tę listę tworzę, sortuję, 
iteruję, używam regexpa zmieniając coś w danych.
Albo hashowanie różnych struktur i losowe wybieranie ich.

Jak znajdę dziś jeszcze czas, to wrzucę te kody, jak nie to po weekendzie.

Ale póki co, nikt tu z was nie pisze o programach w .rb zajmujących po 
2-4gb ramu... :(

adam
Re: Ruby poza railsami
#686
Author: Paweł Kondzior
Date: Fri, 19 Oct 2007 14:07
22 lines
1971 bytes
Kiedys uzylem ruby do skopiowania bazy napisow do piosenek z pewnego 
portalu, algorytm pobieral strone, parsowal html, tworzyl rekordy w 
bazie, cala strona to okolo 3 GB kodu html, baza po sparsowaniu 350 mb, 
caly proces trwal okolo 4 dni, biblioteka do parsowania kodu html w ruby 
byla koszmarnie wolna :( zapewne uzywajac samych regexpow zajelo by to 
kilkanascie godzin, ale napisanie tego z wykorzystaniem DOM bylo owiele 
prostrze :) i latwiejsze w debugowaniu.

Dnia 07-10-19 15:32, moldovenu napisał(a):
>> Powiedz wiecej o tym, przedstaw pomiary, problemy, zadania. Chetnie o 
>> tym poczytam.
> 
> Moje testy to np. lista obiektów-danych. Tę listę tworzę, sortuję, 
> iteruję, używam regexpa zmieniając coś w danych.
> Albo hashowanie różnych struktur i losowe wybieranie ich.
> 
> Jak znajdę dziś jeszcze czas, to wrzucę te kody, jak nie to po weekendzie.
> 
> Ale póki co, nikt tu z was nie pisze o programach w .rb zajmujących po 
> 2-4gb ramu... :(
> 
> adam
Re: Ruby poza railsami
#688
Author: Jaroslaw Zabiello
Date: Fri, 19 Oct 2007 14:17
16 lines
1398 bytes
On Fri, 19 Oct 2007 09:20:35 +0100, moldovenu  
<moldovenu@spamu.niet.interia.pl> wrote:

> Jestem na etapie wyboru ru/py do pewnego projektu - pomijając wszystkie  
> kwestie semantyki i możliwości języka, w wielu miejscach Ruby jest  
> zwyczajnie dużo szybszy niż Python, nawet tam gdzie spodziewałem się iż  
> Ruby polegnie.

Jakieś cuda opowiadasz. Python jest lekko biorą jakieś 2x szybszy. Robiłem  
kiedyś masowe przetwarzane obrazków w Ruby w RMagick i chodziło to  
koszmarnie wolno + pożarł prawie całą pamięć. Zmieniłem na Pythona i PIL i  
poszło jak burza.

-- 
Jarosław Zabiełło
http://blog.zabiello.com
Re: Ruby poza railsami
#689
Author: moldovenu
Date: Fri, 19 Oct 2007 17:41
9 lines
1167 bytes
> Jakieś cuda opowiadasz. Python jest lekko biorą jakieś 2x szybszy. 

Spokojnie. Kod się kończy piec ;)
na razie wyniki czasowe są pl/rb/py 41:58:130, a mem: 735:595:655

Jak skończę, to wrzucę całość, każdy będzie mógł sobie pouruchamiać, 
pooptymalizować itd.

adam
Re: Ruby poza railsami
#690
Author: Marcin Mielżyński
Date: Sat, 20 Oct 2007 13:03
24 lines
1984 bytes
Jaroslaw Zabiello pisze:
> On Fri, 19 Oct 2007 09:20:35 +0100, moldovenu 
> <moldovenu@spamu.niet.interia.pl> wrote:
> 
>> Jestem na etapie wyboru ru/py do pewnego projektu - pomijając 
>> wszystkie kwestie semantyki i możliwości języka, w wielu miejscach 
>> Ruby jest zwyczajnie dużo szybszy niż Python, nawet tam gdzie 
>> spodziewałem się iż Ruby polegnie.
> 
> Jakieś cuda opowiadasz. Python jest lekko biorą jakieś 2x szybszy. 
> Robiłem kiedyś masowe przetwarzane obrazków w Ruby w RMagick i chodziło 
> to koszmarnie wolno + pożarł prawie całą pamięć. Zmieniłem na Pythona i 
> PIL i poszło jak burza.
> 

Python może być i 5x szybszy niż Ruby 1.8, ale porównywanie wydajności 
implementacji języków pod względem jakichś owrapowanych zewnętrznych 
bibliotek to porównywanie skarpetek z drzwiami.
Btw, Ruby ma z koleji dużo mniejsze wymagania pamięciowe, głównie dzięki 
tagowaniu wskaźników, gdzie np. w Pythonie int to jest cały duży 
12-bajtowy objekt (choć cache mu trochę pomaga), w Rubym Fixnum to 
zawsze jest tylko int*.

lopex
Re: Ruby poza railsami
#691
Author: Rafał Komorowski
Date: Sat, 20 Oct 2007 17:19
12 lines
2067 bytes
Dawno nie zaglądałem na forum. Nie wiem czy autor wątku jest jeszcze
zainteresowany, ale w moim przypadku przygoda z Rubym to nie tylko
Rails. Robię przy pomocy Rubiego transformacje materiału tekstowego
zapisanego jako SGML, do dalszej obróbki. W skład tego wchodzi
parsowanie, zapisanie jako drzewa obiektów i potem praca na takich
strukturach. Stety/niestety nie implementowałem tego w innym języku,
więc nie mam porównania co do szybkości czy zajętości pamięciu.
Obrabiam pliki o maksymalnej objętości 10 MB, program wykonuje się
kilka/kilkanaście minut, na starszym sprzęcie trwało to i pół godziny.
W każdym razie jeśli pytanie czy jest czy się da i czy to działa -
owszem, da się i działa. Z wyłączeniem moich własnych błędów, które co
jakiś czas wykrywam - całość sprawuje się niezawodnie.
Re: Ruby poza railsami
#692
Author: Jaroslaw Zabiello
Date: Sat, 20 Oct 2007 23:27
14 lines
1340 bytes
On Sat, 20 Oct 2007 14:03:54 +0100, Marcin Mielżyński <lopx@gazeta.pl>  
wrote:

> Ruby ma z koleji dużo mniejsze wymagania pamięciowe, głównie dzięki  
> tagowaniu wskaźników, gdzie np. w Pythonie int to jest cały duży  
> 12-bajtowy objekt (choć cache mu trochę pomaga), w Rubym Fixnum to  
> zawsze jest tylko int*.

Ruby może tak, ale Mongrel to już niekoniecznie. Zajmuje dużo więcej  
pamięci niż jakikolwiek proces Pythona jaki używam dla Pylons czy Django.

-- 
Jarosław Zabiełło
http://blog.zabiello.com
Re: Ruby poza railsami
#693
Author: Marcin Mielżyński
Date: Sun, 21 Oct 2007 00:30
25 lines
1949 bytes
Jaroslaw Zabiello pisze:
> On Sat, 20 Oct 2007 14:03:54 +0100, Marcin Mielżyński <lopx@gazeta.pl> 
> wrote:
> 
>> Ruby ma z koleji dużo mniejsze wymagania pamięciowe, głównie dzięki 
>> tagowaniu wskaźników, gdzie np. w Pythonie int to jest cały duży 
>> 12-bajtowy objekt (choć cache mu trochę pomaga), w Rubym Fixnum to 
>> zawsze jest tylko int*.
> 
> Ruby może tak, ale Mongrel to już niekoniecznie. Zajmuje dużo więcej 
> pamięci niż jakikolwiek proces Pythona jaki używam dla Pylons czy Django.
> 

I znowu to samo!, co mongrel ma wspólnego z tym wątkiem ? Znowu 
porównujesz śliwki ze szpinakiem. Jakoś po latach przetwarzania danych w 
Rubym nie był mi potrzebny.

Mongrel faktycznie może być przydatny przy jakiejś webdeveloperce od 
krórej chyba mniej nudne jest nawet kopanie rowów bo szybciej widać 
postępy...

A tak na koniec, to wcale nie mongrel bierze tyle pamięci, wskaż mi w 
jego źródłach miejsce w którym jest taki zachłanny.

lopex
Re: Ruby poza railsami
#696
Author: moldovenu
Date: Mon, 22 Oct 2007 18:22
79 lines
4422 bytes
zgodnie z obietnicami ;) wrzucam kody którymi porównywałem szybkość i 
zajętość pamięci w perlu, rubym i pythonie.

Zasadnicza część, to pliki dao/data_process.(rb|py|pl)
które tworzą listę obiektów-rekordów danych (przyjąłem, że właśnie tak 
chcę porównywać szybkość tych języków). Tworzony obiekt (dao) jest 
instancją jednokrotnie dziedziczonej klasy z własną metodą sortowania. 
Nic skomplikowanego.

Potem te obiekty sortuję, modyfikuję, znowu sortuję, przeszukuję 
regexpem... i dostaję takie mniej więcej wyniki:

cd dao; perl data_process.pl; python data_process.py; ruby data_process.rb
data_process.pl point: list created, 24.313586 total: 24.313586 MEM: 573
data_process.pl point: sorting 1, 6.366267 total: 30.679853 MEM: 673
data_process.pl point: total incr, 1.796528 total: 32.476381 MEM: 673
data_process.pl point: Last sort, 7.006141 total: 39.482522 MEM: 673
rev sort OK
data_process.pl point: Find by regex, 2.995174 total: 42.477696 MEM: 735
fives: 200000

data_process.py point: list created 81.5295240879  total:  81.5295240879 
MEM: 654
data_process.py point: sorting 1 11.3950788975  total:  92.9246029854 
MEM: 654
data_process.py point: total incr 1.5905020237  total:  94.5151050091 
MEM: 654
data_process.py point: last sort 11.1945290565  total:  105.709634066 
MEM: 654
data_process.py point: Find by regex 15.8707268238  total: 
121.580360889 MEM: 655
fives:  200000
fives counted ok
MEM: 655

data_process.rb point: list created, 31.129116, total: 31.129116, MEM: 578
data_process.rb point: sorting 1, 5.633625, total: 36.762741, MEM: 578
data_process.rb point: total incr, 5.374478, total: 42.137219, MEM: 578
data_process.rb point: Last sort, 5.565322, total: 47.702541, MEM: 578
data_process.rb point: Find by regex, 7.589033, total: 55.291574, MEM: 595
fives:
200000

Ciekawi mnie, że ruby, choć bardziej dynamiczny od pythona, dużo lepiej 
sobie radzi w prostych operacjach jak sortowanie. Lepiej nawet od perla. 
Również czas tworzenia listy jest z ogromną przewagą dla Rubiego vs. py. 
A nawet szukanie regexpem. No chyba że tam są jakieś błędy...?

Drugi test (w makefile jako pierszy) to głównie szybkość wybierania z hasha.

hash.pl point: Hash created, 26.208645 total: 26.208645 MEM: 1391
hash.pl point: randoms created /not counted/, 4.211777 total: 26.208645 
MEM: 1506
hash.pl point: RAndoms from hash, 17.002721 total: 43.211366 MEM: 1506

hash.py point: Hash created 81.9068770409  total:  81.9068770409 MEM: 842
hash.py point: randoms created /not counted/ 27.4965000153  total: 
81.9068770409 MEM: 976
hash.py point: RAndoms from hash 11.7002389431  total:  93.607115984 
MEM: 976

hash.rb point: Hash created, 101.553801, total: 101.553801, MEM: 1189
hash.rb point: randoms created /not counted/, 12.131743, total: 
101.553801, MEM: 1213
hash.rb point: RAndoms from hash, 17.927992, total: 119.481793, MEM: 1213

Pliki źródłowe do całości http://mountains.ws/varia/rupy.tgz
Można po prostu rozpakować i dać "make"
Poza linuxowym sposobem sprawdzania pamięci, reszta kodu powinna działać 
też na innych systemach. Dla kompów <= 1GB ramu warto zmniejszyć zmienną 
"times" w data_process, aby się nie zaswapować.

Disklajmer: testy robiłem pod kątem tego, co mniej-więcej chciałem 
sprawdzić. Jeśli uważacie, że daną operację w danym języku wydajniej 
jest zrobić w inny sposób - podzielcie się. Na razie nie cross-postuję 
tego na py i pl, bo ciekaw jestem waszych komentarzy i uwag.
Dobrej zabawy ;)

-adam
Re: Ruby poza railsami
#694
Author: Paweł Kondzior
Date: Mon, 22 Oct 2007 19:31
8 lines
1294 bytes

Dnia 07-10-21 02:30, Marcin Mielżyński napisał(a):
> 
> I znowu to samo!, co mongrel ma wspólnego z tym wątkiem ? Znowu 
> porównujesz śliwki ze szpinakiem. Jakoś po latach przetwarzania danych w 
> Rubym nie był mi potrzebny.
Skąd tyle agresji w tobie ? Szczególnie do tych dwóch zawodów?
Re: Ruby poza railsami
#695
Author: Marcin Mielżyński
Date: Tue, 23 Oct 2007 16:33
14 lines
1435 bytes
Paweł Kondzior pisze:
> 
> 
> Dnia 07-10-21 02:30, Marcin Mielżyński napisał(a):
>>
>> I znowu to samo!, co mongrel ma wspólnego z tym wątkiem ? Znowu 
>> porównujesz śliwki ze szpinakiem. Jakoś po latach przetwarzania danych 
>> w Rubym nie był mi potrzebny.
> Skąd tyle agresji w tobie ? Szczególnie do tych dwóch zawodów?

Ja agresji ? :D, jeżeli jeden wykrzyknik kojarzy się agresją, w takim 
razie przepraszam.

lopex
Re: Ruby poza railsami
#697
Author: roman.janowczyk
Date: Fri, 02 Nov 2007 21:53
19 lines
1865 bytes
jeśli chodzi o benchmark to popatrz tutaj:
http://www.timestretch.com/FractalBenchmark.html
i
http://wiki.rubyonrails.org/rails/pages/Framework%20Performance
Pozdrawiam,
R.J.
moldovenu napisał(a):
> Czy są tu osoby używające Ruby np. do przetwarzania dużej ilości danych?
> Mające większe projekty w tym języku - albo chociaż inne niż webowe?
> W czym robiliście je wcześniej, dlaczego właśnie Ruby?
>
> Jestem na etapie wyboru ru/py do pewnego projektu - pomijając wszystkie
> kwestie semantyki i możliwości języka, w wielu miejscach Ruby jest
> zwyczajnie dużo szybszy niż Python, nawet tam gdzie spodziewałem się iż
> Ruby polegnie.
>
> Są tu jacyś nie-railsowcy? ;)
>
> adam
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads