c# - 默认情况下,plinq 会对 Dictionary<string, string> 使用范围分区还是 block 分区?以及如何强制对方?

标签 c# parallel-processing plinq

默认情况下,plinq 会对 Dictionary<string, string> 使用范围分区还是 block 分区?

这是我的用例:

    Dictionary<string,string> asmachtas = new Dictionary<string,string>();
    ...
    int sum = asmachtas.AsParallel().Sum(arg => myFunction(arg));

我怎样才能自己检查呢?如何强制使用其他类型的分区?

最佳答案

范围分区仅适用于实现 IList<> 的集合。 Dictionary<,> 仅实现 IEnumerable<> 而不是 IList<>,因此将使用 block 分区。

PLINQ 使用的分区算法是一个实现细节,因此您实际上没有办法查找它。您可以在传递给 Sum() 的委托(delegate)中放置一个断点,并从调用堆栈中推断出分区方案,但堆栈相当困惑。

关于c# - 默认情况下,plinq 会对 Dictionary<string, string> 使用范围分区还是 block 分区?以及如何强制对方?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8888795/

相关文章:

arrays - 计算数组平均值的高效并行调度算法

performance - Spark 性能 - 如何并行化大循环?

c# - Plinq 语句在静态构造函数中陷入僵局

c# - 使用泛型编写类似的逻辑

c# - 在不同线程中创建的控件.NET

c# - ASP.Net 注册表中的 MS Captcha 超时持续时间

java - 如何从Java中的并行数组中删除重复项?

c# - .NET 操作在多核机器上的非线性扩展

c#-4.0 - 如何使用 C# 从 List<T>.AsParallel().ForAll() 中断

c# - VB.NET 能否读取 XML?