html的灵活性加快了网页的速度
本文关键字:网页 速度 灵活性 html | 更新日期: 2023-09-27 18:13:17
写一些网页抓取的新东西,所以我为此道歉。我试图减少这个应用程序的运行时间。当浏览大约100只股票的列表时,需要30多秒(为了简洁,我只列出了5只)。是否有任何方法可以提高线程/异步编程的效率?我可能遇到了雅虎服务器想要一次发送回单个IP的数量的限制。最终我的目标是创建一个类"股票",其中一堆属性将获取基于web的数据,像这样。
static void Main(string[] args)
{
List<string> stocks = new List<string>() { "AA", "AAL", "AAPL", "ABX", "ADBE" };
foreach (var stock in stocks)
{
Task.Factory.StartNew(() => { getPrice(stock); });
}
Console.ReadLine();
}
private static void getPrice(string stock)
{
var webGet = new HtmlWeb();
var doc = webGet.Load("http://finance.yahoo.com/q?s=" + stock);
HtmlNode ourNode = doc.DocumentNode.SelectSingleNode("//*[@id='"yfs_l84_" + stock.ToString().ToLower() + "'"]");
if (ourNode != null)
{
Console.WriteLine(stock + ": " + ourNode.InnerText);
}
}
使用Parallel。ForEach循环,但不要期望有很大的改进,因为速度99%取决于yahoo的响应时间。
Parallel.ForEach(stocks, stock =>
{
getPrice(stock);
});
平行。ForEach还可以设置并行度(正在执行的并发操作的数量)。
Parallel.ForEach(stocks, new ParallelOptions() { MaxDegreeOfParallelism = 3 }, stock =>
{
getPrice(stock);
});
有关更多信息,请查看MSDN文档:https://msdn.microsoft.com/en-us/library/dd460720%28v=vs.110%29.aspx和https://msdn.microsoft.com/en-us/library/system.threading.tasks.parallel%28v=vs.110%29.aspx