Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# LINQ和amp的区别是什么;PLINQ在执行方面_C#_Linq_Plinq - Fatal编程技术网

C# LINQ和amp的区别是什么;PLINQ在执行方面

C# LINQ和amp的区别是什么;PLINQ在执行方面,c#,linq,plinq,C#,Linq,Plinq,我想知道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.AsParalle

我想知道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;

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

PLinq是Linq的并行版本,这意味着一些查询可以在多个线程上执行,然后PLinq可以提高性能。如果您在使用并行编程或顺序编程之间进行选择,则两者之间的取舍是相同的

请参见此

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

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


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

PLinq
并不总是更快@yadrimz:u说“这意味着一些查询可以在多个线程上执行”我们可以看看有多少线程在执行我的查询吗?我们可以设置不应该处理我的查询的线程吗?请引导。尝试以下操作:Console.WriteLine(“{0}个线程”,Process.GetCurrentProcess().threads.Count);另请参见此注释:通常plinq会选择与核心计数相等的并行度,但是请参见“有什么区别?”在本例中,可能什么都没有。这取决于
fileList
是什么类型的东西。虽然它们看起来可以互换,但它们用于解决特定问题。如果你不知道案例,那么你的问题就会自动变成(或)。旁白:我现在很容易想起你的名字,因为你问了很多奇怪的问题。孩子问为什么没关系,否则你必须提供问题的清晰推理。如果没有它,你可能会产生数百个无用的问题。我认为你的例子并不好,因为它们实际上都没有执行任何东西。您需要添加
ToList()
foreach
或类似的内容,以便他们实际执行某些操作。我想知道如果使用plinq,有多少线程或进程将并行运行以从文件列表中提取文件?请查看我的plinq代码并指导我。谢谢