C# PLINQ与大数据搜索

C# PLINQ与大数据搜索,c#,linq,parallel-processing,plinq,C#,Linq,Parallel Processing,Plinq,我想确认一下我所想的是一个理想的解决方案 我有一份来自客户的数百万“实体”的清单。我想将每个实体与另一个(或多个其他)列表进行比较,该列表可以有数百万个实体,并记录命中率 实体通常是一个人,有姓名/号码/出生日期等,但可以是类似于企业名称的名称 我有一个项目,它将请求作为一个实体xml进行搜索,并将请求和结果xml保存到数据库中 我需要的是在可配置数量的线程上运行该项目,在其他线程完成时生成新线程。PLINQ是解决这一问题的理想方案吗 假设我想要10个线程。我想获取前10个实体并生成10个线程。

我想确认一下我所想的是一个理想的解决方案

我有一份来自客户的数百万“实体”的清单。我想将每个实体与另一个(或多个其他)列表进行比较,该列表可以有数百万个实体,并记录命中率

实体通常是一个人,有姓名/号码/出生日期等,但可以是类似于企业名称的名称

我有一个项目,它将请求作为一个实体xml进行搜索,并将请求和结果xml保存到数据库中

我需要的是在可配置数量的线程上运行该项目,在其他线程完成时生成新线程。PLINQ是解决这一问题的理想方案吗

假设我想要10个线程。我想获取前10个实体并生成10个线程。当第一个线程结束时,第11个实体应该从一个新线程开始,以此类推,直到搜索完所有线程


谢谢你的意见,我对并行性不是很精通

如果要保存到数据库中,为什么不批量导入数据并使用查询连接这两组数据?这应该比在内存中执行要快得多。我不想看到你用上百万个实体消耗的内存

如果必须在内存中执行,那么使用PLinq可能会更快。线程创建和上下文切换会带来开销。使用PLinq,您应该让引擎确定线程分配。此时很少显式创建线程

但是,如果您要比较的列表是相对静态的,那么将其设置为字典并依靠键进行查找可能会使您受益更多,因为您不必为要查找的每个项目扫描整个列表