我正在開發一個應用程序,我需要下載一堆網頁,最好儘可能快。我現在這樣做的方式是我有多個線程(100),它們各自擁有System.Net.HttpWebRequest
。這類作品,但我沒有得到我想要的表演。目前,我有一個600+ Mb/s的強大連接,而且這個連接最多隻能使用10%(峯值時)。我想我的策略是有缺陷的,但我無法找到任何其他好的方法來做到這一點。優化多個網頁的下載。 C#
另外:如果使用HttpWebRequest
不是一個好的下載網頁的方式,請這麼說:) 該代碼已經從java半自動轉換。
謝謝:)
更新:
public String getPage(String link){
myURL = new System.Uri(link);
myHttpConn = (System.Net.HttpWebRequest)System.Net.WebRequest.Create(myURL);
myStreamReader = new System.IO.StreamReader(new System.IO.StreamReader(myHttpConn.GetResponse().GetResponseStream(),
System.Text.Encoding.Default).BaseStream,
new System.IO.StreamReader(myHttpConn.GetResponse().GetResponseStream(),
System.Text.Encoding.Default).CurrentEncoding);
System.Text.StringBuilder buffer = new System.Text.StringBuilder();
//myLineBuff is a String
while ((myLineBuff = myStreamReader.ReadLine()) != null)
{
buffer.Append(myLineBuff);
}
return buffer.toString();
}
給我們一個你目前的戰略描述。或許有代碼;) – Stormenet 2011-05-19 16:55:43
數以百計的線程很少很好 – Dyppl 2011-05-19 16:56:24
使用100個線程可能無濟於事,因爲我從未聽說過有多少個邏輯內核。您應該創建一些等於PC上邏輯核心數量的線程,並提高它們的優先級。另外,我想知道爲每個人製作新的System.Net.HttpWebRequest需要多少開銷?這些不能以某種方式重用嗎?你如何存儲這些頁面? – MAW74656 2011-05-19 16:59:20