gpt4 book ai didi

c# - PLINQ 有什么真正的好处吗?

转载 作者:太空狗 更新时间:2023-10-29 17:49:27 24 4
gpt4 key购买 nike

最近我对 Linq 和 Plinq 做了一些测量。我看不出 Plinq 在哪种情况下具有真正显着的优势。

我发现了很多例子,例如:

Enumerable.Range(0, 10000).AsParallel().ForAll(_ => Thread.Sleep(50000));

这是一个完全没用的例子,因为它可以并行化 10000 度,是的,然后会快 10000 倍,但在业务应用程序中很少会循环 10000 次并进行“IO 作业”。

如果有人可以举一个例子,请张贴。

Plinq 仅适用于 Linq to Objects 和 Linq to XML。不建议在网络服务器上运行的应用程序中使用它(它有自己的线程管理)。因此,我们的机会减少到具有多核的桌面应用程序。

通常我编写的 linq 查询会在几分之一秒内按顺序运行。如果我将它并行化并且它真的会并行运行然后会更快,但谁在乎呢?我认为它仍然足够快。最终用户不会看到任何差异。

我可以想象一个例子,当有人从数据库中获取所有数据并在内存中运行查询时。那么也许它是有用的,但它是一个错误的设计。

TPL 是异步编程的好东西,但我仍然不确定 Plinq 是否是一个有用的工具。

有人对此有积极的经验吗?

最佳答案

您从 PLINQ 中获益的关键场景是这样的:

int[] src = Enumerable.Range(0, 100).ToArray();
var query = src.AsParallel()
.Select(x => ExpensiveFunc(x));

而且您确实会得到真正的好处。

参见文章 here有关何时有用的更多详细信息。

例如,当我尝试评估一种昂贵的迭代数值方法以便从一组 X 点计算一系列 Y 值以进行绘图时,我已经看到了好处。

关于c# - PLINQ 有什么真正的好处吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20630040/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com