究竟什么是PLINQ?

时间:2009-11-02 19:01:42

标签: c# .net linq plinq

PLINQ作为LINQ的扩展在.NET 4.0 Framework中添加。

  • 这是什么?
  • 它解决了什么问题?
  • 什么时候合适?什么时候不合适?

5 个答案:

答案 0 :(得分:35)

这是并行LINQ。这是在多核/多处理器系统上并行运行LINQ查询的一种方式,以便(希望)加速它们。

MSDN Magazine中有一篇很好的文章。

对于当前的详细信息和计划,我建议您阅读Parallel Programming with .NET Team Blog上的文章。他们是实施并行扩展的团队,包括PLINQ。

答案 1 :(得分:15)

PLINQ是并行执行的LINQ,即使用当前计算机中的处理能力。

如果您的计算机具有2核(如双核处理器),您将获得语言集成查询操作员使用两个核心并行工作。

使用“only”LINQ,您将无法获得同样多的性能,因为标准语言集成查询运算符不会并行化您的代码。这意味着您的代码将以串行方式运行,而不会利用所有可用的处理器内核。

有许多PLINQ查询运算符能够使用众所周知的并行模式执行代码。

看一下我的博客文章,其中展示了使用AsParallel扩展方法在Parallel中运行简单的LINQ查询时获得的最快速度:

Parallel LINQ (PLINQ) with Visual Studio 2010/2012 - Perf testing

如果你想深入使用PLINQ,我建议你阅读:

Patterns for Parallel Programming: Understanding and Applying Parallel Patterns with the .NET Framework 4

答案 2 :(得分:10)

它是一个库,允许您进行正常的LINQ查询,将其划分为较小的任务,并利用处理器核心在多个线程上执行每个单独的任务。

答案 3 :(得分:3)

它允许您将.AsParallel添加到LINQ,以尝试使用尽可能多的处理器执行查询。很整洁,但你仍需要了解一下你的算法是否“可并行化” - 这不是魔术。

它基本上不需要管理线程池并管理同步从每个线程返回的结果 - 通常没有并行扩展库,您必须手动执行此操作。

答案 4 :(得分:1)

来自维基百科的Parallel Extensions

  

并行LINQ(PLINQ)是LINQ的并发查询执行引擎,可以并行化对象(LINQ to Objects)和XML数据(LINQ to XML)上的查询执行。 PLINQ旨在通过使用查询来公开数据并行性。可以通过PLINQ并行化对作为查询实现的对象的任何计算。但是,对象需要实现IParallelEnumerable接口,该接口由PLINQ本身定义。在内部,它使用TPL执行。

相关问题