我正在寻找验证我正在考虑的是理想的解决方案。
我有来自客户的数百万'实体'的清单。我想将每个实体与另一个(或其他几个)列表进行比较,这些列表可能包含数百万个实体,并记录命中率。
实体通常是一个人,具有姓名/编号/出生日期等,但可以是商业名称。
我有一个项目,它将请求作为一个实体xml,搜索并将请求和结果xml保存到数据库中。
我需要的是在可配置数量的线程上运行该项目,在其他线程完成时生成新线程。 PLINQ是一个理想的解决方案吗?
所以说我想要10个帖子。我想采取前10个实体并产生10个线程。当第一个线程结束时,第11个实体应该在新线程等上开始,直到所有线程都被搜索过。
感谢任何输入,我对并行性并不精通。
答案 0 :(得分:0)
如果您要保存到数据库中,为什么不批量导入数据并使用查询来加入这两组数据呢?这应该比在内存中尝试执行速度快得多。我不想看到数百万实体消耗的内存。
如果你必须在内存中使用,那么使用PLinq可能会更快。线程创建和上下文切换存在开销。使用PLinq,您应该让引擎确定线程分配。此时您应该很少明确地创建线程。
但是,如果您要比较的列表是相对静态的,那么您可以从使其成为字典并依赖于查找键来获益更多,因为您不必扫描每个项目的整个列表。试图找到。