我已经创建了从网页中抓取内容的应用程序。刮擦方法正在另一个线程上运行。比方说,它可以在100秒内从1000个网页中删除内容。为每个循环分配X个线程为1
我没做什么测试。我运行我的应用程序5次,并将不同的1000个网址放到每个应用程序中。现在,它在150秒内从5000个URL中删除内容。
好吧,但我不想每次运行5个应用程序。我想更快地制作foreach
循环(用于从links
对象获得link
)。
我无法真正使用每个链接的新线程,因为它给我out of memory exception
。我认为Parallel
循环会做同样的事情。
我喜欢让我的foreach
循环运行更快,大约5到10次。我的代码是这样的:
foreach (Link link in links)
scrapeContent(link.url);
我该如何运行它更快?分配线程将是最好的选择?
“我认为并行循环会做同样的事情。” ---如何检查而不是“思考”?事实总是比假设更好。 – zerkms
总体速度可能是由某些Web服务器响应缓慢所限制的。如果您并行运行多个请求,则可以利用等待时间,从而提高吞吐量。我的方法将是一堆线程。通过反复试验优化池大小。 –
如果你能显示你所有的代码,那真的很棒。只是你显示的一小部分没有帮助。理想情况下,我们希望能够运行您的代码,然后将其与我们所做的任何改进进行比较,以便我们确信我们已经改进并因此回答了您的问题。 – Enigmativity