🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: pl.comp.lang.ruby
6 messages
6 total messages Started by Jan Koniecka Wed, 09 Jul 2008 20:46
Ryby - wątki ?
#1114
Author: Jan Koniecka
Date: Wed, 09 Jul 2008 20:46
11 lines
1292 bytes
Witam,
Mam zamiar napisać mały programik, który będzie wykorzystywał wątki. Mam 
więc pytanie jak zachowuje się Ruby z wątkami. Czy ktoś już stosował i 
jak wygląda sprawa wydajnościowa. Chodzi o to, iż wątki, które chce 
napisać będa odwoływały się dość czesto  do bazy danych lub plików. Jak 
zachwowuje sie Ruby jeśli np wątki obciążają procek do 90% i czy jest to 
możliwe ?
Druga sprawa co lepiej wybrać do obsługi bazy danych Sequel czy DBI ?
W Ruby jestem początkujący dlatego te pytania
-- 
Pozdrawiam Jan Koniecka
Re: Ryby - wątki ?
#1115
Author: Maciej Piechotka
Date: Thu, 10 Jul 2008 09:22
24 lines
2114 bytes
Jan Koniecka <konsar@remove-this.gmail.com> writes:

> Witam,
> Mam zamiar napisać mały programik, który będzie wykorzystywał
> wątki. Mam więc pytanie jak zachowuje się Ruby z wątkami. Czy ktoś już
> stosował i jak wygląda sprawa wydajnościowa. Chodzi o to, iż wątki,
> które chce napisać będa odwoływały się dość czesto  do bazy danych lub
> plików. Jak zachwowuje sie Ruby jeśli np wątki obciążają procek do 90%
> i czy jest to możliwe ?

1. Jest możliwe.
2. Będzie się zachowywyało IMHO jak każdy inny program wielowątkowy

> Druga sprawa co lepiej wybrać do obsługi bazy danych Sequel czy DBI ?
> W Ruby jestem początkujący dlatego te pytania

Do czego? Jeśli potrzebujesz ORM to datamapper. Jeśli nie to nadal stosowałbym
Sequel (jeden język a nie dwa przemieszane).

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: Ryby - wątki ?
#1116
Author: Jan Słupicki
Date: Sun, 20 Jul 2008 17:24
55 lines
3263 bytes
Jan Koniecka pisze:
> Witam,
> Mam zamiar napisać mały programik, który będzie wykorzystywał wątki. Mam 
> więc pytanie jak zachowuje się Ruby z wątkami. Czy ktoś już stosował i 
> jak wygląda sprawa wydajnościowa. Chodzi o to, iż wątki, które chce 
> napisać będa odwoływały się dość czesto  do bazy danych lub plików. Jak 
> zachwowuje sie Ruby jeśli np wątki obciążają procek do 90% i czy jest to 
> możliwe ?

Pamiętaj że wątki Ruby-ego nie są wątkami natywnymi (przynajmniej przy 

obecnej maszynie wirtualnej). Dlatego same z siebie nie dadzą ci
jakiejkolwiek korzyści wydajnościowej. Jeśli jednak mocno będziesz 
korzystać z bazy danych to możesz na na wątkach mimo wszystko zyskać. 
Dzięki wątkom możesz otworzyć wiele połączeń z bazą i zadać wiele 
zapytań jednocześnie. Większość baz danych dobrze korzysta z wątków i 
wiele jednoczesnych zapytań wykona szybciej niż te same zapytania 
wykonane kolejno.
Jeśli jednak masz dużo przetwarzania w Ruby to lepiej użyj JRuby - on 
używa wątków natywnych i jak masz wielordzeniowy procesor to różnice 
będą znaczne. Możesz też poczekać na Ruby 2.0 :-)
Co do zachowania się pod dużym obciążeniem to chyba więcej zależy od 
systemu operacyjnego. W zwykłym Ruby to nie problem bo chodzi na jednym 
wątku. W JRuby już trzeba uważać bo np. Windows XP nie najlepiej sobie 
radzi z większą ilością wątków. Moje doświadczenia wprawdzie odnoszą się 
do Javy ale powinny pasować też do JRuby. Pod Windows XP na procesorze 
jedno rdzeniowym program zachowywał są poprawnie do około 50-60 wątków. 
Potem system sobie nie radził. Na SUN OS i gorszym wydajnościowo 
sprzęcie program chodził świetnie przy 300 i więcej wątkach.
Jak chcesz zobaczyć różnicę między Ruby a JRuby to uruchom poniższy 
program:

require "time"
require "thread"

THREADS = 20
SIZE = 1000000
start = Time.now
puts "Start"
threads = (1..THREADS).map do |i|
   puts "Uruchamiam watek #{i}"
   Thread.new(i) do |t|
     Thread.current[:id] = i
     (1..SIZE).map {|e| rand(100)}.sort
     puts "Zakonczylem watek #{t}"
   end
end
while t = threads.find {|lt| lt.alive?}
   t.join
end
puts "Koniec : #{Time.now - start} s"


-- 
Jan Słupicki
Re: Ruby - wątki ?
#1117
Author: Jaroslaw Zabiello
Date: Thu, 24 Jul 2008 10:32
23 lines
1706 bytes
Dnia 20-07-2008 o 18:24:48 Jan Słupicki <jan.slupicki@gmail.com>  
napisał(a):

> Jeśli jednak masz dużo przetwarzania w Ruby to lepiej użyj JRuby - on  
> używa wątków natywnych i jak masz wielordzeniowy procesor to różnice  
> będą znaczne. Możesz też poczekać na Ruby 2.0 :-)

Faktycznie zwykły Ruby jest dużo wolniejszy, ale już Ruby 1.9 ma natywne  
wątki i w podanym przez ciebie teście jest najszybszy. Wyniki są dla la  
MacBook Pro Core 2 Duo 2.2 GHz, Mac OS X 10.5.4 (Leopard):

Ruby (ruby 1.9.0 (2008-06-20 revision 17482) [i686-darwin]) = 10.57 s.

Ruby (ruby 1.8.6 (2008-07-17 rev 6586) [x86_64-jruby1.1.2]) = 19.24 s.

Ruby Enterprise (ruby 1.8.6 (2007-09-24 patchlevel 111)  
[i686-darwin9.3.0]) = 78.08 s.

Ruby (ruby 1.8.7 (2008-06-20 patchlevel 22) [i686-darwin9]) = 291.05 s.

-- 
Jarosław Zabiełło
http://blog.zabiello.com
Re: Ryby - wątki ?
#1119
Author: Jan Koniecka
Date: Thu, 24 Jul 2008 20:15
11 lines
1015 bytes
Jan Słupicki wrote:
...
...
...

Super, dziękuje kolego. Widać znaczącą rożnicę. Wersja 1.9 też wygląda 
obiecująco :).


-- 
Pozdrawiam Jan Koniecka
Re: Ruby - wątki ?
#1118
Author: Jan Słupicki
Date: Wed, 30 Jul 2008 19:12
11 lines
1368 bytes
> Faktycznie zwykły Ruby jest dużo wolniejszy, ale już Ruby 1.9 ma natywne 
> wątki i w podanym przez ciebie teście jest najszybszy. Wyniki są dla la 
> MacBook Pro Core 2 Duo 2.2 GHz, Mac OS X 10.5.4 (Leopard):
> 
> Ruby (ruby 1.9.0 (2008-06-20 revision 17482) [i686-darwin]) = 10.57 s.

Wiadomo może kiedy w końcu wypuszczą 2.0 ?

-- 
Jan Słupicki
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