在抓取数据时维护黑名单的最佳方法-C#.Net 4.5
我正在用C#编写一个刮板,它将从html中收集ID号。它为html发送异步http请求(使用ThreadPool.QueueUserWorkItem),回调方法从html解析ID 在附加到文本文件之前,必须根据黑名单检查每个ID。目前,我正在对每个请求运行一个针对嵌入式SQLite db的查询,以检查黑名单,如果黑名单不存在,则将ID写入一个文件 我的应用程序占用了高达90%的CPU,我想这是因为每个异步回调完成了多少读/写操作在抓取数据时维护黑名单的最佳方法-C#.Net 4.5,c#,.net,asynchronous,web-scraping,C#,.net,Asynchronous,Web Scraping,我正在用C#编写一个刮板,它将从html中收集ID号。它为html发送异步http请求(使用ThreadPool.QueueUserWorkItem),回调方法从html解析ID 在附加到文本文件之前,必须根据黑名单检查每个ID。目前,我正在对每个请求运行一个针对嵌入式SQLite db的查询,以检查黑名单,如果黑名单不存在,则将ID写入一个文件 我的应用程序占用了高达90%的CPU,我想这是因为每个异步回调完成了多少读/写操作 那么,有没有更有效的方法来实现这一点呢?由于SQLite查询,您不
那么,有没有更有效的方法来实现这一点呢?由于SQLite查询,您不太可能看到这种CPU负载。每个HTTP请求执行一个查询—HTTP请求比访问数据库花费的时间要长得多,即使SQLite执行完整的表扫描
您应该使用探查器,找出代码的哪一部分占用大量CPU。同样,除非您的SQLite查询包含(大量)复杂的联接,否则我很确定这不是问题所在。我发现vs2013内置了一个探查器,所以这将非常好。谢谢你帮我做业余爱好:)