2011-11-30 41 views
1

基本上我有857圖像鏈接檢查。我用3種不同的方法實現它,並且每個運行3次。Typhoeus寶石不減少響應時間

方法1:使用百頭巨怪和水潤(並行請求)被

hydra = Typhoeus::Hydra.new(:max_concurrency => 50) 
st = Time.now 
@image_urls.each do |image_url| 
    request = Typhoeus::Request.new(image_url) 
    hydra.queue(request) 
end 
hydra.run 
et = Time.now 
puts "\n" + (et - st).to_s() + " seconds" 

時間:117.65,99.45,102.01秒

方法2:使用百頭巨怪(奇異請求)

st = Time.now 
@image_urls.each do |image_url| 
    response = Typhoeus::Request.head(image_url) 
end 
et = Time.now 
puts "\n" + (et - st).to_s() + " seconds" 

所用時間:33.85,31.89,30.18秒

方法3:使用網:: HTTP Ruby庫

st = Time.now 
@image_urls.each do |image_url| 
    url = URI.parse(image_url) 
    req = Net::HTTP.new(url.host, url.port) 
    res = req.request_head(url.path).code 
end 
et = Time.now 
puts "\n" + (et - st).to_s() + " seconds" 

拍攝時間:83.30,67.62,75.26秒

起初我還以爲方法1:百頭巨怪和水潤是假設通過發送並行請求來加速Http響應時間,而不是一次發送1個響應時間。但是,上述結果表明,我實際上正在獲得較慢的響應時間。

其中一個原因可能是對標頭的http請求的開銷比正常的http GET請求少。除此之外,我在這裏做錯了什麼?需要建議來優化這個過程,我只需要檢索http狀態碼。

回答

0

正如你懷疑的那樣,你一定要使用相同的HTTP方法進行基準測試。 HEAD請求往往比GET請求更快地返回。

如果有一些誤報不是破壞交易者,您可能想要嘗試降低連接/響應超時。如果準確性至關重要,請降低最大併發性(嘗試10-15)並利用Typhoeus::Request#on_complete來執行HTTP狀態代碼處理。