【问题标题】:What is the difference between LINQ & PLINQ in terms of execution [duplicate]LINQ和PLINQ在执行方面有什么区别[重复]
【发布时间】:2014-12-03 14:16:58
【问题描述】:

我想知道 LINQ 和 PLINQ 在执行方面有什么区别?

什么时候我们应该使用 PLINQ 而不是 LINQ 只是讨论一些情况

这里给出两个代码。一个由 LINQ 完成,另一个由 PLINQ 完成。

告诉我这两个代码有什么区别和作用?

LINQ

var q = from file in fileList  
         where file.Length > 10000 
        select file; 

PLINQ

var q = from file in fileList.AsParallel()
         where file.Length > 10000                      
        select file;

请看上面的代码,告诉我代码是如何执行的,在执行方面有什么区别?谢谢

【问题讨论】:

  • “有什么区别?” 在这种情况下可能没什么。那要看fileList是什么东西了。
  • 虽然它们看起来可互换,但它们用于解决特定问题。如果您不知道案例,那么您的问题会自动变为What is PLINQ(或worse)。 P.S.:我现在很容易想起你的名字,因为你问了很多奇怪的问题。孩子可以问为什么?,否则你必须提供清晰的推理问题。没有它,您可能会提出数百个无用的问题
  • 我认为你的例子不是很好,因为它们实际上都没有执行任何东西。您需要添加 ToList()foreach 或类似的东西,他们才能真正做某事。

标签: c# linq plinq


【解决方案1】:

PLINQ(以及一般的并行性)仅在负载可以分散跨 CPU 内核时提供潜在性能优势。并行性不会改善磁盘 I/O、网络 I/O 或远程资源。它可以改善内存访问,但内存通常也受到带宽限制。

运行您的代码并观察 CPU 使用率。如果 CPU 的一个核心跳到 100%,那么 CPU 是一个瓶颈,你可能会从并行性中受益;否则 CPU 不是你的瓶颈,并行运行可能不会提高你的性能。

请注意,最终确定的唯一方法是尝试两种方法并衡量差异。其他一切都只是猜测。

【讨论】:

  • 我想知道如果我使用 plinq 将有多少线程或进程并行运行以从文件列表中提取文件?请查看我的 plinq 代码并指导我。谢谢
【解决方案2】:

PLinq 是 Linq 的并行版本,这意味着一些查询可以在多个线程上执行,然后 PLinq 会提高性能。权衡与您在使用并行编程或顺序Choosing between both 之间进行选择时相同。

看到这个Might be helpful link

【讨论】:

  • @yadrimz:你说“这意味着一些查询可以在多个线程上执行”我们可以看到有多少线程正在执行我的查询吗?我们可以设置没有线程应该处理我的查询吗?请指导。
  • 试试这个: Console.WriteLine("{0} threads " ,Process.GetCurrentProcess().Threads.Count);另请参阅此link 注意:通常 plinq 会选择与您的核心数量相等的并行度,但是请参阅此might be useful link
猜你喜欢
  • 2012-01-22
  • 1970-01-01
  • 2011-04-30
  • 1970-01-01
  • 2014-10-18
  • 1970-01-01
  • 1970-01-01
  • 2017-02-17
相关资源
最近更新 更多