我正在开发一个应用程序,我需要下载一堆网页,最好尽可能快。我现在这样做的方式是我有多个线程(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