Ton*_*ich 16 c# linq .net-4.0 plinq task-parallel-library
我读到,如果发现PLinq更贵,PLinq将自动使用非并行Linq.所以我想为什么不将PLinq用于所有事情(如果可能的话)并让运行时决定使用哪一个.
应用程序将部署到多核服务器,我可以开发更多代码来处理并行性.
使用plinq作为默认值的缺陷是什么?
一个陷阱是你失去了利用套装排序的能力.
请使用以下代码:
var results = new int { 0 ,1 ,2 ,3 };
var doSomethingSpecial = (from r in results.AsParallel() select r / 2).ToArray();
Run Code Online (Sandbox Code Playgroud)
您不能指望按顺序排列的结果,因此结果可能 是该集合的任何排列.这是最大的陷阱之一,从某种意义上讲,如果您处理有序数据,那么由于排序成本,您可能会失去性能优势.
另一个问题是你失去了捕获已知异常的能力.所以我无法捕获空指针异常(不是说你应该这样做)或者甚至捕获FormatException.
有很多理由说明为什么你不应该总是在所有情况下都使用Plinq,我将再强调一下.不要读到"自动使用非并行Linq",它只能处理查询简单的障碍情况,或者太复杂而无法并行运行.
始终记住,使用PLINQ越多,您将在服务器上消耗的资源就越多,而这些资源正在从其他正在运行的线程中消失.
资源:
| 归档时间: |
|
| 查看次数: |
1125 次 |
| 最近记录: |