ruby の Net::HTTP と curb (curl の ruby binding) の単純な速度比較
ruby の Net::HTTP と curb (curl の ruby binding) の単純な速度比較
マラちゃん(懐かしいなこの呼び方)がLLごとのでとっていたので、Ruby だとどうなんだろうと思って curb と Net::HTTP とで測定。
$ ruby -I/usr/lib/ruby/gems/1.8/gems/curb-0.7.3/lib curb_get.rb
user system total real
1.360000 3.960000 5.320000 ( 8.025331)
3.380000 6.130000 9.510000 ( 14.312267)
curb は user+systemだけだとだいたい Net::HTTP の倍ぐらいだなぁ。ただマラちゃんの書いてる perl の Curl ライブラリよりは2,3倍遅そう(詳しいオーバーヘッドは調べてない)
単純に URL を get したいだけなら
Curl::Easy.perform(url).body_str
で書けてシンプルなのもいいね>curb
コード
require 'curb'
require 'net/http'
require 'benchmark'
Net::HTTP.version_1_2
n = 10000
Benchmark.bm do |x|
x.report {
n.times do
c = Curl::Easy.new('http://localhost/favicon.ico')
c.perform
end
}
x.report {
n.times do
Net::HTTP.start('localhost', 80) {|http| http.get('/favicon.ico') }
end
}
end
$ ruby --version
ruby 1.8.7 (2010-01-10 patchlevel 249) [i486-linux]
curl のバージョンは 7.20.0。サーバは apache 2.2 の mpm worker で proxy 鯖ぽいセッティングで動かしてます。十分速いかどうかはしらない。