Thread View: pl.comp.lang.ruby
6 messages
6 total messages
Started by Jan Koniecka
Wed, 09 Jul 2008 20:46
Ryby - wątki ?
Author: Jan Koniecka
Date: Wed, 09 Jul 2008 20:46
Date: Wed, 09 Jul 2008 20:46
11 lines
1292 bytes
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 ?
Author: Maciej Piechotka
Date: Thu, 10 Jul 2008 09:22
Date: Thu, 10 Jul 2008 09:22
24 lines
2114 bytes
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 ?
Author: Jan Słupicki
Date: Sun, 20 Jul 2008 17:24
Date: Sun, 20 Jul 2008 17:24
55 lines
3263 bytes
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 ?
Author: Jaroslaw Zabiello
Date: Thu, 24 Jul 2008 10:32
Date: Thu, 24 Jul 2008 10:32
23 lines
1706 bytes
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 ?
Author: Jan Koniecka
Date: Thu, 24 Jul 2008 20:15
Date: Thu, 24 Jul 2008 20:15
11 lines
1015 bytes
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 ?
Author: Jan Słupicki
Date: Wed, 30 Jul 2008 19:12
Date: Wed, 30 Jul 2008 19:12
11 lines
1368 bytes
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