我有一个程序,我试图尽可能快地工作。这个程序加载了许多不同的网站,并对它们进行了一些修改。HtmlAgility Pack Parallelisation VS Winforms HtmlDocument速度
我曾经通过使用Forms.HtmlDocument(我基本下载它通过使用WebRequests,然后使用WebBrowser控件将它推入文档)执行刮取 - 但是,这是不可能的,因为无法强制WebBrowser在其不是主线程时更新。
所以我决定尝试一下HtmlAgilityPack,认为或许我可以平行一点。但是后来我看了下面的帖子:
How to get max performance using Parallel.For/ForEach? (performance timings included)
这表明它并没有真正paralelise很好。
转换所有的代码需要一些时间(由于它的怪癖和复杂性) - 但是我想知道它是否值得。如果我避免使用WebGet(而是使用WebRequest获取流并将其推入到AgilityPack中) - 是否会提高性能?目前,每次迭代大约需要19秒,大部分时间都花在等待页面下载上。
任何其他的想法将被考虑。谢谢。
编辑:虽然我们在这里,有没有使用任何一种方法的任何速度增加
“正常的多线程库”我假设你的意思是开始线程而不是System.Parallel? – Aabela
Yeap开始的线程给你更多的控制。虽然我没有深入细节,但TPL针对创建尽可能多的线程进行了优化,因为您的处理器可以支持这些线程。相反,在这种情况下并行化应用程序的原因不是为了使处理器饱和,而是为了并行创建多个http连接。 – Lakis