【发布时间】:2019-03-04 21:18:51
【问题描述】:
下面是代码sn-p。使用 EF6。
var itemNames = context.cam.AsParallel()
.Where(x=> x.cams ==
"edsfdf")
.Select(item => item.fg)
.FirstOrDefault();
为什么 PLINQ 比较慢?
【问题讨论】:
-
这看起来更像是新闻而不是问题。你有什么问题?
-
在多线程上做事并不总是比单线程运行更快。在您开始在代码中使用并行指令之前,需要考虑很多因素。
-
如果表凸轮非常大,您可以考虑并行方法。然后您可以使用单独的 DbContext 或 ObjectContext 实例并使用 CancellationTokenSource,这样您就可以在找到匹配行后立即取消并行搜索并尽快返回。
-
This answer 可能是相关的:请注意,LINQ-To-Entities 并不真正适用于
AsParallel。通常,它会导致您的代码运行速度比顺序运行慢。 -
.AsParallel()采用 IEnumerable,而不是 IQueryable,因此如果这是 Linq-To-Entities,它不仅运行速度较慢,而且会将整个表枚举到内存中(在 AsParallel 之前没有 where 子句)然后在内存中运行 Where 和 Select 枚举器。
标签: c# entity-framework entity-framework-6 task-parallel-library plinq