こんばんわ、佐藤といいます。
一度にいろんなURLをダウンロードするプログラムを作っているのですが。
20コぐらいのURLを同時にダウンロードしてみたのですが、やたら遅いのは
なぜでしょうか?
Cでマルチスレッドで同じようなプログラムを作った時は、30秒ぐらいで全てをダウンロード
出来ましたが、rubyでこれをやると300秒ぐらいかかります。(WinNT、CPU:MMX200)
また、Freebsdで動かした所200秒ぐらいでダウンロード出来ました(FreeBSD、CPU:Pentiun100)
作ったプログラムのメインの所だけ
Start()
def data_send_recv (i)
$out[i] = ""
$count[i] = 0
while $out2[i] = $sock[i].gets
$out[i] += $out2[i]
$count[i] += 1
end
$sock[i].close
print Kconv::tosjis($out[i])
$nokori -= 1
end
def Start()
$hoge_list.each do |@hoge
if $proxy_flg = TRUE then
send_data = "GET http://" + $hostName + $url1 + @hoge + $url2 + "\n"
else
send_data = "GET " + $url1 + @hoge + $url2 + "\n"
end
$sock[i] = TCPSocket.open(@host_name, @port)
$sock[i].write(send_data)
Thread.start {
data_send_recv(i)
}
sleep(0.1)
i += 1
end
i = 0
while $mnokori > 0
print i*2,"秒経過"," 残り銘柄数 ---> ",$nokori,"\n"
sleep(2)
i += 1
end
end
-----------------------------------------------------------
(株)東芝 府中事業所[生資ブ](資管) 佐藤 雄一
T E L : 042-333-2401
F A X : 042-340-8005
e-mail: yuuichi.satoh / toshiba.co.jp
-----------------------------------------------------------