【问题标题】:Exactly what is PLINQ?究竟什么是 PLINQ?
【发布时间】:2009-11-02 19:01:42
【问题描述】:

PLINQ 作为 LINQ 的扩展添加到 .NET 4.0 框架中。

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

【问题讨论】:

    标签: c# .net linq plinq


    【解决方案1】:

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

    MSDN Magazine 有一篇很好的文章。

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

    【讨论】:

    • MSDN 杂志没有文章的深层链接,但博客仍然不错,所以你仍然支持我的投票。
    【解决方案2】:

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

    如果您的计算机具有 2 个内核(例如双核处理器),您的语言集成查询运算符将使用两个内核并行执行工作。

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

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

    查看我的博客文章,我在其中展示了使用 AsParallel 扩展方法并行运行简单的 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

    【讨论】:

      【解决方案3】:

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

      【讨论】:

      • 使用 PLINQ 只对 CPU 密集型任务有意义,对吧?
      【解决方案4】:

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

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

      【讨论】:

      • 请记住,并非所有东西都有 .AsParallel 用于 LINQ,DataTable 就是一个很好的例子。
      【解决方案5】:

      来自维基百科的Parallel Extensions

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

      【讨论】:

      • 并行扩展!= PLINQ。 PLINQ 是被添加到 .NET 4 的新并行扩展的一小部分,但无论如何都不是所有 PFX 工作。
      • @Reed 当然。我只是链接到 Wikipedia,这是 Google 查询“PLINQ”的第三个结果,并且有一个关于 Parallel LINQ 的部分。这是一个微不足道的问题的微不足道的答案。
      猜你喜欢
      • 2014-10-28
      • 2012-08-27
      • 2010-11-12
      • 2011-03-18
      • 2011-01-22
      相关资源
      最近更新 更多